我对U-SQL相当新,所以这可能是一个简单的问题。
我在ADL表中有一个字段[utc_timestamp],其中包含一个“1497178877”形式的unix时间戳,用于衡量1970-01-01的秒数。
有没有简单的方法可以将U-SQL中的时间戳转换为“2017-06-11”形式的日期和日期时间对象?
我最初的尝试似乎没有做得很好。
答案 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的程序集。