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

时间:2018-04-10 19:31:01

标签: u-sql

我对U-SQL相当新,所以这可能是一个简单的问题。

我在ADL表中有一个字段[utc_timestamp],其中包含一个“1497178877”形式的unix时间戳,用于衡量1970-01-01的秒数。

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

我最初的尝试似乎没有做得很好。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

U-SQL使用C#作为表达式语言,因此您可以使用C#/ .NET来执行此操作。

这是一个回答如何在C#中执行此操作的链接:netty-common

由于我们目前使用的是.NET Runtime 4.5.2,您将无法使用4.6内置方法(我们计划升级到较新版本的运行时,但我还没有ETA)

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