You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Stream Analytics中将DateTime转换为BIGINT?

在Azure Stream Analytics中转换System.Timestamp()为BIGINT或指定格式字符串

一、获取时间戳等效Ticks(BIGINT类型)

Azure Stream Analytics不支持直接将datetime类型强制转换为bigint,但可以通过DATEDIFF函数计算从0001-01-01 00:00:00(.NET DateTime的Ticks起始基准时间)到System.Timestamp()的间隔数,得到等效的Ticks值:

SELECT DATEDIFF(millisecond, '0001-01-01', System.Timestamp()) * 10000 AS TimestampTicks
INTO [YourOutputSink]
FROM [YourInputSource]

说明:

  • .NET中1 Tick等于100纳秒,因此先计算毫秒级间隔再乘以10000,即可得到对应Ticks值
  • 若仅需毫秒级时间戳(无需精确到Ticks),可直接使用:
SELECT DATEDIFF(millisecond, '1970-01-01', System.Timestamp()) AS TimestampMs
INTO [YourOutputSink]
FROM [YourInputSource]

二、生成yyyyMMddHHmmss格式的字符串作为唯一ID

有两种可靠实现方式:

方式1:使用FORMAT函数

SELECT FORMAT(System.Timestamp(), 'yyyyMMddHHmmss') AS UniqueId
INTO [YourOutputSink]
FROM [YourInputSource]

方式2:手动拼接日期时间组件(规避FORMAT的区域设置问题)

如果遇到FORMAT函数因区域配置导致的格式异常,可以手动拼接各时间部分确保格式准确:

SELECT 
    CONCAT(
        RIGHT('0000' + CAST(YEAR(System.Timestamp()) AS VARCHAR(4)), 4),
        RIGHT('00' + CAST(MONTH(System.Timestamp()) AS VARCHAR(2)), 2),
        RIGHT('00' + CAST(DAY(System.Timestamp()) AS VARCHAR(2)), 2),
        RIGHT('00' + CAST(DATEPART(hour, System.Timestamp()) AS VARCHAR(2)), 2),
        RIGHT('00' + CAST(DATEPART(minute, System.Timestamp()) AS VARCHAR(2)), 2),
        RIGHT('00' + CAST(DATEPART(second, System.Timestamp()) AS VARCHAR(2)), 2)
    ) AS UniqueId
INTO [YourOutputSink]
FROM [YourInputSource]

内容的提问来源于stack exchange,提问作者Brian Vallelunga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 06:32:49