Azure Data Lake Analytics - 输出日期为 +0000 而不是 -0800
Azure Data Lake Analytics - Output dates as +0000 rather than -0800
我在 Azure Data Lake Analytics 中有一个日期时间列 table。
我所有的传入数据都是 UTC +0000。使用以下代码时,所有 csv 输出都将日期转换为 -0800
OUTPUT @data
TO @"/data.csv"
USING Outputters.Text(quoting : false, delimiter : '|');
输出中的示例数据时间:
2018-01-15T12:20:13.0000000-08:00
是否有控制日期输出格式的选项?我真的不明白为什么输入数据不是时一切都突然在 -0800。
目前,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 上提交带有偏移量的 DateTime 的功能请求。如果您还有其他问题,请告诉我!
我在 Azure Data Lake Analytics 中有一个日期时间列 table。
我所有的传入数据都是 UTC +0000。使用以下代码时,所有 csv 输出都将日期转换为 -0800
OUTPUT @data
TO @"/data.csv"
USING Outputters.Text(quoting : false, delimiter : '|');
输出中的示例数据时间:
2018-01-15T12:20:13.0000000-08:00
是否有控制日期输出格式的选项?我真的不明白为什么输入数据不是时一切都突然在 -0800。
目前,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 上提交带有偏移量的 DateTime 的功能请求。如果您还有其他问题,请告诉我!