Преобразовать временную метку Unix в USQL date [duplicate]

Если вы работаете только в узле, вы можете использовать модуль fs для чтения в многострочной строке из файла:

var diagram;
var fs = require('fs');
fs.readFile( __dirname + '/diagram.txt', function (err, data) {
  if (err) {
    throw err; 
  }
  diagram = data.toString();
});
1
задан rwdvc 10 April 2018 в 19:31
поделиться

2 ответа

@table = 
SELECT * FROM 
    ( VALUES
    (1497178877)
    ) AS T(seconds);

DECLARE @dateStart = new DateTime(1970, 01, 01);

@result = 
SELECT  @dateStart.AddSeconds(seconds).ToString("yyyy-MM-dd") AS newDateString,
        @dateStart.AddSeconds(seconds) AS newDate
FROM @table;

OUTPUT @result
TO "/Temp/Dates/Example1.txt"
USING Outputters.Tsv();
3
ответ дан David Paul Giroux 16 August 2018 в 04:38
поделиться
  • 1
    Ницца! Я разработал встроенные функции здесь , но ваш пример кажется гораздо более компактным. – wBob 10 April 2018 в 21:22
  • 2
    Большой вопрос, как бы вы это сделали для Unix Time Stamp до Microseconds (т. Е .: 1523048766211397)? – Fastidious 4 June 2018 в 16:26
  • 3
    DateTime.AddTicks. 10 тиков - одна микросекунда. – David Paul Giroux 5 June 2018 в 20:41

U-SQL использует C # для языка выражения, поэтому вы можете использовать C # / .NET для этого.

Вот ссылка, отвечающая на вопрос о том, как это сделать в C #: Как преобразовать временную метку Unix в DateTime и наоборот?

Поскольку мы в настоящее время на .NET Runtime 4.5.2 вы не сможете использовать встроенный метод 4.6 (мы планируем перейти на более новую версию среды выполнения, но пока у меня нет ETA).

Если вы хотите избежать преобразования inline как выражения C #, вы можете либо развернуть его через код VS позади, либо с помощью переменной Func U-SQL, либо создать и зарегистрировать сборку, содержащую UDF.

1
ответ дан Michael Rys 16 August 2018 в 04:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: