MSSQL如何从时区的时间戳获取正确的日期

问题描述 投票:0回答:1

我有一个(时间戳)MSSQL数据库,带有UTC的时间戳。我想获取特定时区的日期

以下显示问题

DECLARE @TS DateTime2='2020-02-08 23:00:00'

SELECT CAST((@TS at time zone 'W. Europe Standard Time') as date) as StartDate, @TS as StartTimeStampUTC, @TS at time zone 'W. Europe Standard Time' as StartTimeStampLocalTime

StartTimeStampUTC:2020-02-08 23:00:00.0000000StartTimeStampLocalTime:2020-02-08 23:00:00.0000000 +01:00开始日期:2020-02-08

我预计StartDate值为2020-02-09,因为本地时间是2020-02-08 23:00 + 01:00 = 2020-02-09 00:00

如何获得正确的日期?

sql-server date timestamp-with-timezone
1个回答
0
投票

这似乎可以解决问题:

SELECT CAST(dateadd(hour,DATEdiff(hour,@TS AT TIME ZONE 'W. Europe Standard Time',@TS ),@TS) as date) as StartDate

答案现在是预期的2020-02-09

© www.soinside.com 2019 - 2024. All rights reserved.