SQL Server TIME ZONE在特定日期

问题描述

我的sql Server安装在拉脱维亚服务器上。在下面显示查询中,我正在找到最后一个星期四和星期五(bruteforce方法!)。

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

当前,拉脱维亚和科威特之间的时差通常是相同的,但是我需要确保在白天节省时仍然如此。

我的方法正确吗?

SELECT *
FROM MyTable
WHERE LENGTH(REPLACE(TRIM(Description),CHAR(0x00 using utf8),'')) > 0;

查询返回以下结果:

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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)