删除分钟和秒,然后转换为UTC时区



我有一列带有时间戳数据,如

2021-12-09 08:01:00.520

我想删除分钟和秒,然后在一行中将日期转换为UTC时区。

我试过这个代码

 SELECT DATEADD(MINUTE, DATEDIFF(MINUTE, 0, Time_Stamp), 0) From Table1

我得到这个结果

2021-12-09 08:00:00.000

我尝试了这个代码

SELECT DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), Time_Stamp)From Table1

我得到这个结果

2021-12-09 16:01:00.520

我所期望的是

2021-12-09 16:00:00.000

如何以简单的方式将select语句组合成一行

这里有另一种方法。

要删除分钟、秒并只保留小时,您可以使用以下查询

DATEADD(HOUR, DATEDIFF(HOUR, 0, Time_Stamp), 0)

要转换为UTCDate,只需找到GETDATE()GETUTCDATE()之间的小时((差异(因为您对分钟和秒不感兴趣(,并将其添加到上述查询中

将所有放在一起

DATEADD(HOUR, DATEDIFF(HOUR, 0, Time_Stamp) + DATEDIFF(HOUR, GETDATE(), GETUTCDATE()), 0)

将日期转换为字符串并截断以删除分钟和秒。然后加上时区和UTC之间的时差(以分钟为单位(。

select dateadd(minute,datediff(minute,getdate(),getutcdate()),convert(datetime2(0),convert(varchar(13),getdate(),126)+':00:00',126));
SELECT DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), dateadd(hour, datediff(hour, 0, Time_Stamp), 0)) FROM Table1

最新更新