2011-07-21 29 views

回答

0

現在我這樣做:

SELECT 
CASE USEDAYLIGHTSAVING 
    WHEN 1 THEN 
     CASE DATEDIFF(HH,GETUTCDATE(),GETDATE()) 
       -- I know the server is set to Mountan time and follows daylight saving time 
       -- MDT = -6 
       -- MST = -7 
      WHEN -6 THEN 
       DATEADD(HH,TIMEZONEOFFSET+1,GETUTCDATE()) 
      ELSE 
       DATEADD(HH,TIMEZONEOFFSET,GETUTCDATE()) 
     END 
    ELSE 
      DATEADD(HH,TIMEZONEOFFSET,GETUTCDATE()) 
    END 
FROM 
USERS 

它的工作原理,但如果服務器獲得的移動到另一個時區或不休耕夏令時我正在用水管沖洗。

+0

爲了讓您知道,您在DST班次中也遇到了問題。大多數夏令時班次都是以當地時間爲準,例如,東部時區在夏令時之後兩小時和山區時區之前兩小時的班次相同,所有東部時區的時間都是一小時。 – chezy525

+1

@ chezy525 - 你是對的。我認爲我們都應該拉亞利桑那州,只是傾倒夏令時。 – NitroxDM

+0

如果我們做到了,我會很開心!這東西*什麼也不做,但給我頭痛... – chezy525

0

我有一個表與用戶,UTC時間偏移量,如果他們觀察夏令時。是否有內置的方式來獲得正確的用戶時間?

世界各地的不同時區以不同的方式觀察夏令時。他們在一天的不同時間開始和停止。只要有一個偏移和DST標誌是不足以可靠地轉換。

相反,你需要一個時區標識符,如America/Los_Angeles,或其他listed here之一。一旦你有了,你可以使用我的SQL Server Time Zone Support項目來完成轉換。