2011-07-21 13 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シフト時にも問題が発生しています。ほとんどのDSTシフトは現地時間に基づいています。たとえば、DSTの東部時間帯シフト後の2時間、山岳時間帯が同じになる前に、すべての東部時間帯時間で1時間です。 – chezy525

+1

@ chezy525 - あなたは正しいです。私たちは皆アリゾナ州を抜き、夏時間をダンプするだけだと思います。 – NitroxDM

+0

私たちがしたら私はとても幸せだろう!この*もの*は何もしませんが、頭痛を与える... – chezy525

0

私は、ユーザー、UTC時間オフセット、および夏時間を見ているテーブルがあります。正しいユーザー時間を得るための方法が組み込まれていますか?

世界各地の異なるタイムゾーンは、DSTをさまざまな方法で観察します。彼らは1日の異なる時間に開始し、停止します。オフセットとDSTフラグだけでは、確実に変換するには不十分です。

代わりに、あなたは、このようなAmerica/Los_Angeles、または他人listed hereの一つとしてタイムゾーン識別子を、必要とします。一度それがあれば、私のSQL Server Time Zone Supportプロジェクトを使って変換を行うことができます。

関連する問題