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

TZ文字列形式のTimeStampをOracleのTimeStampに変換します

    おそらく、固定されたTとZは、通常ではないため、少し混乱しています日時形式モデル 要素。ただし、ドキュメント 言う:

    したがって、TとZを"T"のように二重引用符で囲みます。 および"Z" 、フォーマットモデルで。

    タイムゾーンに関心がない場合は、を使用できます。 to_timestamp() 機能

    to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')
    

    または、タイムゾーンを使用したい場合は、を使用できます。 to_timestamp_tz() 機能 、デフォルトで現在のセッションタイムゾーンになります(ここで実際に指定していないため、ZはZulu / UTCとして解釈されません):

    to_timestamp_tz('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')
    

    タイムゾーンを指定し、UTCを指定する場合は、 from_tz() 機能

    from_tz(to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')), 'UTC')
    

    それらが生み出す違いを確認するには、セッションのタイムゾーンをデモとして指定します。

    alter session set time_zone = 'America/New_York';
    
    select to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"') as no_tz,
      to_timestamp_tz('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"') as default_tz,
      from_tz(to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"'), 'UTC') as utc_tz
    from dual;
    
    NO_TZ
    --------------------------------------------------
    DEFAULT_TZ
    --------------------------------------------------
    UTC_TZ
    --------------------------------------------------
    24-MAR-15 07.08.24.000000000                       
    24-MAR-15 07.08.24.000000000 AMERICA/NEW_YORK      
    24-MAR-15 07.08.24.000000000 UTC                  
    

    Zは固定されているため、取得する値は常にUTCを表すと想定しています。変換する必要のある値で実際に異なるタイムゾーンを取得する場合は、それらを抽出して適用する必要があります。これは実行可能ですが困難であり、実際にそのような状況がない限り、入力する価値はありません。




    1. 2つの日付間の時間差を分単位で計算する

    2. 無効なOracleURLが指定されました:OracleDataSource.makeURL

    3. Oracleのテーブルのすべての制約を確認する方法

    4. zendフレームワークwhereステートメントのクエリ