tabimoba.net

とあるエンジニアの雑記帳

OracleでISO 8601形式の日付を出力する

timestamp型の日時をUTCへ変換したうえでISO 8601形式で出力します。

前提条件

  • ISO 8601形式で表示させる日付列の型はtimestamp型であること
  • 日付列の各行の値は、DBMS(Oracle)のタイムゾーンに準じたものであること(例えば、DBMSのタイムゾーンがJSTである場合はJSTで日付がセットされていること)

コード

to_char(
    SYS_EXTRACT_UTC(<timestamp型の日付>),
    'YYYY-MM-DD"T"HH24:MI:SS.FF3"+0000"'
)

select
    sessiontimezone,
    to_timestamp('2019-01-21 09:12:27.804000') as jst,
    to_timestamp(sys_extract_utc(to_timestamp('2019-01-21 09:12:27.804000'))) as utc,
    to_char(
        sys_extract_utc(to_timestamp('2019-01-21 09:12:27.804000')),
        'YYYY-MM-DD"T"HH24:MI:SS.FF3"+0000"'
    ) as utc_iso8601
from dual;

結果

image.png