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

異なるタイムゾーン間の日付/時刻変換

    まず、あなたの表現を溶かしましょう

    FROM_TZ(CAST(TO_DATE(TO_CHAR(q.created_date, 'DDMMYYYY:HH24:MI:SS'), 'DDMMYYYY:HH24:MI:SS') AS TIMESTAMP), 'Europe/London') AT TIME ZONE 'America/New_York'
    

    次のことを行います:

    1. TO_CHAR(q.created_date, 'DDMMYYYY:HH24:MI:SS') -> created_dateを変換します VARCHAR2への値
    2. TO_DATE(..., 'DDMMYYYY:HH24:MI:SS') ->それをDATEに変換し直します
    3. CAST(... AS TIMESTAMP) ->それをTIMESTAMPに変換します (タイムゾーンなし)
    4. FROM_TZ(..., 'Europe/London') ->タイムゾーン「ヨーロッパ/ロンドン」を添付します
    5. ... AT TIME ZONE 'America/New_York' ->タイムゾーンに変換'America/ New_York'

    ポイント1、2、3はダメ! created_date以降 TIMESTAMPです あなたはそれをより短くすることができます

    TO_CHAR(FROM_TZ(q.created_date, 'Europe/London') AT TIME ZONE 'America/New_York', 'DD-MON-YYYY HH24:MI:SS')
    

    SESSIONTIMEZONEの場合 Europe/Londonです あなたも作ることができます

    TO_CHAR(q.created_date AT TIME ZONE 'America/New_York', 'DD-MON-YYYY HH24:MI:SS')
    


    1. MySQL IF NOT NULL、次に1を表示、それ以外の場合は0を表示

    2. MariaDBを使用したLDAP認証とグループマッピングの構成

    3. PHP:複数の配列を反復処理し、SQLINSERTクエリを作成します

    4. SQL Serverで「time」を「datetimeoffset」に変換する(T-SQLの例)