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

SQL 2005でUTCとローカル(つまりPST)時間の間で日付を効果的に変換する

    2つのテーブルを作成し、それらに結合して、保存されているGMT日付を現地時間に変換します。

    TimeZones     e.g.
    ---------     ----
    TimeZoneId    19
    Name          Eastern (GMT -5)
    Offset        -5
    

    夏時間の表を作成し、できるだけ多くの情報を入力します(地域の法律は常に変更されるため、将来のデータがどのようになるかを予測する方法はありません)

    DaylightSavings
    ---------------
    TimeZoneId    19
    BeginDst      3/9/2008 2:00 AM
    EndDst        11/2/2008 2:00 AM
    

    このように参加してください:

    inner join  TimeZones       tz on x.TimeZoneId=tz.TimeZoneId
    left join   DaylightSavings ds on tz.TimeZoneId=ds.LocalTimeZone 
        and x.TheDateToConvert between ds.BeginDst and ds.EndDst
    

    次のように日付を変換します:

    dateadd(hh, tz.Offset + 
        case when ds.LocalTimeZone is not null 
        then 1 else 0 end, TheDateToConvert)
    


    1. Oracleで改行を置き換える方法

    2. Neo4j-Cypherを使用して関係を作成する

    3. Oracle:2つの日付間のHH:MM:SSの時間差を計算します

    4. MySQLのプロセスリストの表示に完全なSQLクエリを表示する