将 UTC 时间戳转换为 U-SQL 中的日期和时间

Convert UTC Time Stamp to Date and Time in U-SQL

我对 U-SQL 还很陌生,所以这可能是一个简单的问题。

我在 ADL table 中有一个字段 [utc_timestamp],其 unix 时间戳格式为“1497178877”,它测量从 1970 年 1 月 1 日开始的秒数。

有什么简单的方法可以将 U-SQL 中的这个时间戳同时转换为“2017-06-11”形式的日期和日期时间对象吗?

我最初的尝试似乎不太奏效。

U-SQL是用C#作为表达语言,所以你可以用C#/.NET来做。

这里是 link 回答如何在 C# 中做到这一点:How can I convert a Unix timestamp to DateTime and vice versa?

由于我们目前使用的是 .NET Runtime 4.5.2,您将无法使用 4.6 built-in 方法(我们计划升级到更新版本的运行时,但我没有预计到达时间)。

如果您想避免将内联转换编写为 C# 表达式,您可以使用 U-SQL Func 变量通过 VS 的代码部署它,或者创建并注册一个包含 UDF 的程序集。

@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();