IoT 中心/流分析 - SQL - 将传入时间戳转换为日期时间

Posted

技术标签:

【中文标题】IoT 中心/流分析 - SQL - 将传入时间戳转换为日期时间【英文标题】:IoT Hub / Stream Analytics - SQL - Convert incoming timestamp to Date Time 【发布时间】:2021-03-14 14:51:01 【问题描述】:

我有一个时间戳在 01/01/1970 之后以毫秒为单位(下面的 [timestamp] 是数据的列名),并且需要添加一个使用 SQL 的附加列来获取这些毫秒并将其转换为日期/时间格式。

我已经尝试过:

SELECT DATEADD(MILLISECOND, [timestamp] %1000, DATEADD(SECOND, [timestamp] /1000, '19700101'))

我收到错误:

无法将类型为“nvarchar(max)”的值“19700101”转换为类型 表达式 'DATEADD ( SECOND , [timestamp] / 1000 , '19700101')'。在“2”行和“152”列。

感谢您的帮助,谢谢! - M

【问题讨论】:

请指定日期格式。 必须尝试以 ISO 时间戳格式指定 19700101 吗?所以“1970-01-01T00:00:00Z”? @silent 时间戳数据是什么样的,你能给我看一个吗? @leon Yue 进来的时间戳数据格式是这样的:1607040000021。google一搜,可能叫“UNIX Epoch”? @Silent 我还没有尝试过,不幸的是我无法在数据进入 IoT Hub 之前更改它,只能通过流分析查询来更改它。 【参考方案1】:

您需要以 ISO 时间戳格式指定 19700101,所以 1970-01-01T00:00:00Z

SELECT DATEADD(MILLISECOND, [timestamp] %1000, DATEADD(SECOND, [timestamp] /1000, '1970-01-01T00:00:00Z'))

【讨论】:

以上是关于IoT 中心/流分析 - SQL - 将传入时间戳转换为日期时间的主要内容,如果未能解决你的问题,请参考以下文章

Windows IoT、IoT 中心、流分析、Azure SQL、Power BI - 啥是正确的路径? [关闭]

如何在流分析中读取 IoT 中心消息“应用程序属性”?

如何从 Azure 流分析仅将数据发送到一个 Azure SQL 数据库表?

Azure 流分析错误:无法反序列化来自 IOT 中心的输入事件

Azure 流分析作业对小数据来说很昂贵?

如何将使用者组定义到 Azure IoT 中心?