如何在Azure Stream Analytics作业中修改时区?将System.Timestamp转为BST
在Azure Stream Analytics中转换System.Timestamp到BST时区
你好!Azure Stream Analytics的System.Timestamp()本身是固定使用UTC时区的,没法直接修改作业级别的时区设置,但完全可以通过SQL查询把它转换为BST(英国夏令时)时间,下面两种方法可以帮你实现:
基础转换(固定+1小时)
如果只需要简单将UTC转成BST(暂时不考虑夏令时切换的场景),直接使用DATEADD函数给UTC时间加1小时即可,示例查询如下:
SELECT DATEADD(hour, 1, System.Timestamp()) AS BST_Timestamp, -- 替换成你的其他业务字段 * INTO [你的输出目标] FROM [你的输入源]
自动适配夏令时的转换
BST是英国夏令时,每年的3月最后一个周日到10月最后一个周日生效(其余时间为GMT,和UTC时间一致)。如果需要自动适配这个时间切换规则,可以用CASE语句结合日期函数来判断,示例如下:
SELECT CASE -- 判断当前时间是否处于英国夏令时区间内 WHEN DATEPART(month, System.Timestamp()) BETWEEN 3 AND 10 -- 匹配三月最后一个周日 AND System.Timestamp() >= DATEADD(day, -DATEPART(weekday, DATEFROMPARTS(DATEPART(year, System.Timestamp()), 3, 26)) + 1, DATEFROMPARTS(DATEPART(year, System.Timestamp()), 3, 26)) -- 匹配十月最后一个周日 AND System.Timestamp() <= DATEADD(day, -DATEPART(weekday, DATEFROMPARTS(DATEPART(year, System.Timestamp()), 10, 25)) + 1, DATEFROMPARTS(DATEPART(year, System.Timestamp()), 10, 25)) THEN DATEADD(hour, 1, System.Timestamp()) ELSE System.Timestamp() -- 非夏令时直接使用UTC(与GMT一致) END AS UK_Local_Timestamp, -- 替换成你的其他业务字段 * INTO [你的输出目标] FROM [你的输入源]
这个查询会自动根据当前时间是否处于夏令时区间,动态调整时区偏移,确保得到的是准确的英国本地时间。
简单总结:作业本身的System.Timestamp无法修改时区,但通过SQL转换完全可以得到你需要的BST时间~
内容的提问来源于stack exchange,提问作者Shankar
相关产品推荐
相关产品推荐

