web-dev-qa-db-ja.com

タイムスタンプ/日付時刻をUTCからEST Oracle SQLに変換する

次のような日付/時刻の値を持つフィールドがあります。

2009-11-17 18:40:05

UTCです。クエリでこれをESTに変換するにはどうすればよいですか?

私はこのようなことを試みていますが、それはエラーをスローします。

// datetime is the field name
SELECT 
   FROM_TZ(TIMESTAMP TO_DATE(datetime, 'yyyy-mm-dd hh24miss'), 'EST') AS DT
FROM
   db_name
14
Phill Pafford

私のデータベースで動作させるには、少し微調整する必要がありましたが、これでうまくいきました。

select from_tz(to_timestamp('2009-11-17 18:40:05','yyyy-mm-dd hh24:mi:ss'), 'UTC') 
at time zone 'America/New_York' from dual

重要なのは「タイムゾーンで」の構文です。

16
Dan

日付フィールドをUTCからESTに変換したい場合、これは私にとってうまくいきました:

CAST(FROM_TZ(CAST(DATE_FIELD AS TIMESTAMP), 'UTC') 
at time zone 'America/New_York' AS Date) as DESIRED_FIELD_NAME

まず、目的の日付フィールドを(DATE_FIELDとして)タイムスタンプにキャストします。キャストの結果はFROM_TZ関数の最初のパラメーターであり、パラメーターのタイプはTIMESTAMPである必要があります。 2番目のパラメーターは 'UTC'です。これは、変更の対象であるためです。

次に、その関数呼び出しの結果をDATE型にキャストし、エイリアスを付けます。

4
Trevor.Screws
select to_char(systimestamp at time zone 'EST','HH') EST_TIME,
    TO_CHAR(SYSDATE,'HH') EDT_TIME,
    NEW_TIME(SYSDATE,
        (
            CASE 
                WHEN to_char(systimestamp at time zone 'EST','HH') = TO_CHAR(SYSDATE,'HH') 
                THEN 'EST'
                ELSE 'EDT'
            END
        ),'GMT') 
    from dual
0
Vilas