Sql server 特定日期时区的SQL Server

Sql server 特定日期时区的SQL Server,sql-server,timezone-offset,Sql Server,Timezone Offset,我的SQL Server安装在拉脱维亚服务器上。在下面显示的查询中,我找到了上周四和周五(bruteforce方法!) 我的目标是在本地拉脱维亚服务器上找到上周四00:00:00科威特时间的等效值,在拉脱维亚时区找到上周五00:00:00科威特时间的等效值 目前,拉脱维亚和科威特之间的时差大致相同,但我需要确保在日间储蓄期间仍然如此 我的方法正确吗 SELECT CAST (last_friday AS datetime) AT TIME ZONE 'Arab Standard Time

我的SQL Server安装在拉脱维亚服务器上。在下面显示的查询中,我找到了上周四和周五(bruteforce方法!)

我的目标是在本地拉脱维亚服务器上找到上周四00:00:00科威特时间的等效值,在拉脱维亚时区找到上周五00:00:00科威特时间的等效值

目前,拉脱维亚和科威特之间的时差大致相同,但我需要确保在日间储蓄期间仍然如此

我的方法正确吗

SELECT
    CAST (last_friday AS datetime) AT TIME ZONE 'Arab Standard Time' last_friday, 
    CAST (last_thursday AS datetime) AT TIME ZONE 'Arab Standard Time'  last_thursday, 
    CURRENT_TIMEZONE() AS CURRENT_TIMEZONE 
FROM
    (SELECT
         DATEAD (DAY,
                 (CASE 
                     WHEN DATENAME (WEEKDAY, GETDATE()) = 'Friday' THEN -7
                     WHEN DATENAME (WEEKDAY, GETDATE()) = 'Saturday' THEN -1
                     WHEN DATENAME (WEEKDAY, GETDATE()) = 'Sunday' THEN -2
                     WHEN DATENAME (WEEKDAY, GETDATE()) = 'Monday' THEN -3
                     WHEN DATENAME (WEEKDAY, GETDATE()) = 'Tuesday' THEN -4
                     WHEN DATENAME (WEEKDAY, GETDATE()) = 'Wednesday' THEN -5
                     WHEN DATENAME (WEEKDAY, GETDATE()) = 'Thursday' THEN -6
                  END), CAST (GETDATE() AS date)) AS last_friday,
         DATEADD(DAY,
                 (CASE WHEN DATENAME(WEEKDAY, GETDATE()) = 'Friday' THEN -8
                       WHEN DATENAME(WEEKDAY, GETDATE()) = 'Saturday' THEN -2
                       WHEN DATENAME(WEEKDAY, GETDATE()) = 'Sunday' THEN -3
                       WHEN DATENAME(WEEKDAY, GETDATE()) = 'Monday' THEN -4
                       WHEN DATENAME(WEEKDAY, GETDATE()) = 'Tuesday' THEN -5
                       WHEN DATENAME(WEEKDAY, GETDATE()) = 'Wednesday' THEN -6
                       WHEN DATENAME(WEEKDAY, GETDATE()) = 'Thursday' THEN -7
                  END), CAST(GETDATE() AS date)) AS last_thursday
    ) last_dates
此查询返回以下结果:

+--------------------------------+--------------------------------+-----------------------------------------------------------+
| last_friday                    | last_thursday                  | CURRENT_TIMEZONE                                          |
+--------------------------------+--------------------------------+-----------------------------------------------------------+
| 2020-09-11 00:00:00.000 +03:00 | 2020-09-10 00:00:00.000 +03:00 | (UTC+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius |
+--------------------------------+--------------------------------+-----------------------------------------------------------+
检查一下另一种在T-SQL中获得“下周五”的简单方法,当DATENAME()出现时,不会出现混乱的
情况:…
cascades。。。。