使用 "Singapore Standard Time" 时区减去小时
Subtract hour using "Singapore Standard Time" timezone
select (convert(datetime ,SWITCHOFFSET(CONVERT(datetimeoffset, '2022-02-11 11:15:00.000'),
(select current_utc_offset FROM sys.time_zone_info where name ='Singapore Standard Time')
))) CurrentTime
我怎样才能达到低于预期的结果?
当前结果:
CurrentTime
-----------------------
2022-02-11 19:15:00.000
预期结果:
CurrentTime
-----------------------
2022-02-11 03:15:00.000
PS: 我不能在脚本中使用 -8
或 -08:00
。
sys.time_zone_info中的偏移量是从UTC+00:00切换到另一个时区的偏移量。
所以“新加坡标准时间”是 +08:00
但如果需要切换到UTC时区,可以更改符号。
SELECT (CONVERT(DATETIME,
SWITCHOFFSET(CONVERT(DATETIME, '2022-02-11 11:15:00.000'),
(SELECT TRANSLATE(CURRENT_UTC_OFFSET,'+-','-+') FROM sys.time_zone_info WHERE name ='Singapore Standard Time')
))) AS CurrentTime
最好使用 AT TIME ZONE
语法:
SELECT
CONVERT(DATETIME, (CONVERT(DATETIME, '2022-02-11 11:15:00.000')
AT TIME ZONE 'Singapore Standard Time'
AT TIME ZONE 'UTC')) AS CurrentTime
两种方法 return 相同:
CurrentTime
2022-02-11 03:15:00.000
select (convert(datetime ,SWITCHOFFSET(CONVERT(datetimeoffset, '2022-02-11 11:15:00.000'),
(select current_utc_offset FROM sys.time_zone_info where name ='Singapore Standard Time')
))) CurrentTime
我怎样才能达到低于预期的结果?
当前结果:
CurrentTime
-----------------------
2022-02-11 19:15:00.000
预期结果:
CurrentTime
-----------------------
2022-02-11 03:15:00.000
PS: 我不能在脚本中使用 -8
或 -08:00
。
sys.time_zone_info中的偏移量是从UTC+00:00切换到另一个时区的偏移量。
所以“新加坡标准时间”是 +08:00
但如果需要切换到UTC时区,可以更改符号。
SELECT (CONVERT(DATETIME,
SWITCHOFFSET(CONVERT(DATETIME, '2022-02-11 11:15:00.000'),
(SELECT TRANSLATE(CURRENT_UTC_OFFSET,'+-','-+') FROM sys.time_zone_info WHERE name ='Singapore Standard Time')
))) AS CurrentTime
最好使用 AT TIME ZONE
语法:
SELECT
CONVERT(DATETIME, (CONVERT(DATETIME, '2022-02-11 11:15:00.000')
AT TIME ZONE 'Singapore Standard Time'
AT TIME ZONE 'UTC')) AS CurrentTime
两种方法 return 相同:
CurrentTime |
---|
2022-02-11 03:15:00.000 |