Unix 时间在 Azure 流分析中转换为日期

Posted

技术标签:

【中文标题】Unix 时间在 Azure 流分析中转换为日期【英文标题】:Unix time convert to Date in Azure stream analytics 【发布时间】:2016-04-12 16:47:37 【问题描述】:

我正在使用流分析来实时处理一些 RFID 数据。来自 RFID 阅读器的事件作为输入发送到事件中心。现在我面临一个问题,事件中的时间是 UNIX 时间格式,看起来像“TimeStamp”:1460471242.22402,“当我测试查询时很奇怪(不是开始工作,而是使用输入中的示例数据), UNIX 时间更改为 "2016-04-12T14:48:00.0000000Z" ,但是当我启动 SA 作业时,它失败并说“时间戳”列不符合 ISO 8601 标准。有没有在不更改输入原始数据的情况下,如何将 UNIX 时间转换为 SA 中的标准日期格式? 我的查询很简单,例如: 选择 EPCValue, Antenna, System.TimeStamp AS 时间 进入 数据输出 从 按TimeStamp的数据输入时间戳

【问题讨论】:

【参考方案1】:

请查看此页面中的示例。它描述了如何将 UNIX 时间转换为 SQL 日期时间格式 https://msdn.microsoft.com/en-us/library/mt573293.aspx

【讨论】:

感谢您的提示,我已经尝试过了,但它不起作用,我将查询更改为:SELECT System.Timestamp as Time, Antenna FROM datainput TIMESTAMP BY DATEADD(millisecond, epochtime, ' 1970-01-01T00:00:00Z')。错误消息是“由于不正确的时间戳而丢弃事件。流分析仅支持日期时间值的 ISO8601 格式”你知道吗?我哪里做错了吗? 我刚刚意识到 DATEADD 只能使用整数类型作为参数的限制。可以请确保您的数据是整数类型吗?我们将进行修复以使错误消息更加具体,并且我们将研究更改 DATEADD 以接受浮点参数。 您也可以将其用作临时解决方法,在流分析中将值转换为整数:SELECT System.Timestamp as Time, Antenna FROM inputeh TIMESTAMP BY DATEADD(millisecond, CAST(CAST(epochtime AS float)作为 bigint), '1970-01-01T00:00:00Z')

以上是关于Unix 时间在 Azure 流分析中转换为日期的主要内容,如果未能解决你的问题,请参考以下文章

Azure 流分析将行转换为列

Azure 流分析查询:将字符串转换为 DateTime

php怎么将指定日期转换为时间戳?

Azure 流分析作业 - 转换查询 - ARM 模板中的正确格式

Azure 流分析 CreateOrReplace 转换冲突或错误请求

Azure 流分析转换数组值