sql >> データベース >  >> RDS >> Sqlserver

selectステートメントで日時列をUTCから現地時間に変換します

    これは、SQLServer2008以降では次のように実行できます。

    SELECT CONVERT(datetime, 
                   SWITCHOFFSET(CONVERT(datetimeoffset, 
                                        MyTable.UtcColumn), 
                                DATENAME(TzOffset, SYSDATETIMEOFFSET()))) 
           AS ColumnInLocalTime
    FROM MyTable
    

    あまり冗長ではないこともできます:

    SELECT DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), MyTable.UtcColumn) 
           AS ColumnInLocalTime
    FROM MyTable
    

    何をするにしても、しないでください -を使用する 操作はアトミックではないため、日付を減算します。システムの日時とローカルの日時の間の競合状態が異なる時間にチェックされるため(つまり、非アトミック)、結果が不確定になる場合があります。

    この回答はDSTを考慮していないことに注意してください。 DST調整を含める場合は、次のSOの質問も参照してください。

    SQLServerで夏時間の開始関数と終了関数を作成する方法



    1. ビッグデータアプリケーション、SQLまたはNoSQLにとって何が良いですか?

    2. PostgreSQLで列のデータ型を確認する3つの方法

    3. レコードが存在するかどうかを判断する最速の方法

    4. PostgreSQLのディザスタリカバリにBarmanを使用する