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

Oracleタイムゾーン変換(from_tzを使用)

    to_timestamp()は文字列(VARCHAR2、CHAR ...)を取得します。日付を指定しようとすると、OracleはNLS_DATE_FORMATに従って文字列に変換します。これは環境によって異なり、予期しない結果を返す可能性があります(この場合のように) 。
    最初にto_charを使用する必要があるため、クエリは次のようになります。

    select to_date(to_char((from_tz(to_timestamp(to_char(DATABASE_DATE, 'YYYY-MM-DD HH:MI:SS PM'), 'YYYY-MM-DD HH:MI:SS PM') ,'America/New_York')
    at time zone 'America/Los_Angeles'),'YYYY-MM-DD HH:MI:SS PM'),'YYYY-MM-DD HH:MI:SS PM') as localtime
    from table
    

    更新: 私があなたを正しく理解しているなら、あなたはこのようなものが欲しいでしょう:

    select to_char((from_tz(to_timestamp(to_char(DATABASE_DATE, 'YYYY-MM-DD HH:MI:SS PM'), 'YYYY-MM-DD HH:MI:SS PM') ,'America/New_York')
        at time zone 'America/Los_Angeles'),'YYYY-MM-DD HH:MI:SS PM TZD') as localtime
        from table
    


    1. MySQLサーバーへの外部アクセスを有効にするにはどうすればよいですか?

    2. WHEREステートメントなしのINT比較

    3. REGEXP_REPLACEおよびPL/SQLを使用しないUUID文字列のフォーマット

    4. 主キーを複合主キーに変更する