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

SQLクエリでのタイムゾーン変換

    タイムゾーンの変更を気にすることなく、このクエリを使用できます。

    select to_char(cast(application_recv_date as timestamp) at time zone 'US/Eastern',
                   'MON dd, YYYY'
                  )
    from application;
    

    例:

    EDT:

    select cast(date'2014-04-08' as timestamp) d1,
           cast(date'2014-04-08' as timestamp) at time zone 'US/Eastern' d2
    from dual;
    
    D1                                 D2
    ---------------------------------- -------------------------------------------
    08-APR-14 12.00.00.000000 AM       07-APR-14 08.00.00.000000 PM US/EASTERN
    

    EST:

    select cast(date'2014-12-08' as timestamp) d1,
           cast(date'2014-12-08' as timestamp) at time zone 'US/Eastern' d2
    from dual;
    
    D1                                 D2
    ---------------------------------- -------------------------------------------
    08-DEC-14 12.00.00.000000 AM       07-DEC-14 07.00.00.000000 PM US/EASTERN
    

    更新:

    タイムゾーンが指定されていない場合、変換にはローカルタイムゾーンが使用されることを思い出させてくれたAlexPooleに感謝します。

    日付を強制的にGMTとして認識させるには、from_tzを使用します。

    from_tz(cast(date'2014-12-08' as timestamp), 'GMT') at time zone 'US/Eastern'
    


    1. 1つの行をより少ない列で複数の行に変換します

    2. 列と複数の行で1つの行の複数の列にグループ化する

    3. PostgreSQL、最大IDからのSELECT

    4. SQLServerで列をNullからNotNullに変更する方法