我在Azure Data Lake Analytics表中有一个datetime列。
我的所有传入数据都是UTC +0000。使用以下代码时,所有csv输出都将日期转换为-0800
OUTPUT @data
TO @"/data.csv"
USING Outputters.Text(quoting : false, delimiter : '|');
输出中的示例数据时间:
2018-01-15T12:20:13.0000000-08:00
是否有控制日期输出格式的选项?我不太明白为什么一切都突然出现在-0800,当传入的数据不是。
答案 0 :(得分:1)
目前,ADLA不会在DateTime中存储TimeZone信息,这意味着它在读取时始终默认为群集机器的本地时间(在您的情况下为-8:00)。因此,您可以通过运行
将DateTime规范化为当地时间DateTime.SpecifyKind(myDate, DateTimeKind.Local)
或使用
DateTime.ConvertToUtc()
以Utc格式输出(但请注意,下次您摄取相同数据时,ADLA仍默认以偏移-0800读取它)。以下示例:
@getDates =
EXTRACT
id int,
date DateTime
FROM "/test/DateTestUtc.csv"
USING Extractors.Csv();
@formatDates =
SELECT
id,
DateTime.SpecifyKind(date, DateTimeKind.Local) AS localDate,
date.ConvertToUtc() AS utcDate
FROM @getDates;
OUTPUT @formatDates
TO "/test/dateTestUtcKind_AllUTC.csv"
USING Outputters.Csv();
您可以在我们的ADL feedback site上为偏移量提交功能请求。如果您有其他问题,请告诉我们!