Top > SQL 関数一覧 (T‐Z) > TO_TIMESTAMP、TO_TIMESTAMP_TZ

文字列をタイムスタンプ型に変換

syntax

  • TO_TIMESTAMP ( string [, format [, nls_param]] )
  • TO_TIMESTAMP ( string [ DEFAULT ret_val ON CONVERSION ERROR ] ↵
               [, format [, nls_param]] ) Oracle 12cr2

  return [ timestamp ]

  • TO_TIMESTAMP_TZ ( string [, format [, nls_param]] )
  • TO_TIMESTAMP_TZ ( string [ DEFAULT ret_val ON CONVERSION ERROR ] ↵
               [, format [, nls_param]] ) Oracle 12cr2

  return [ timestamp with timezone]

parameter

string文字列式、数値式(ユリウス日)
ret_val変換エラー時のデフォルト値
formatフォーマット文字列NLS_TIMESTAMP_FORMAT
nls_param各国語サポートパラメータNLS セッションパラメータ依存

return

  • フォーマット書式に従って変換されたタイムスタンプ、または、タイムゾーン付のタイムスタンプ
    Oracle 12c R2 以降の場合、format 書式にて変換出来ない場合 ret_val を戻すことが可能。

avail

  • SQL および PL/SQL の両方で使用可能。

フォーマット文字列

(注意) DEFAULT ~ ON CONVERSION ERROR を使用した場合、リテラル に制限される。

各国語サポートパラメータ

NLS_CALENDAR についてはマニュアルには表記がないので正式な機能か不明

nls_param の種類設定例
NLS_DATE_LANGUAGEENGLISH
NLS_CALENDAR'JAPANESE IMPERIAL'(要クォート)

TO_TIMESTAMP 関数の内容

文字列式 string をフォーマット文字列 format でタイムスタンプに変換する。
フォーマット文字列 format が省略されると NLS_TIMESTAMP_FORMAT 書式が使用される。NLS_TIMESTAMP_FORMAT 環境変数 または、セッションパラメータ。

DATE 型を TIMESTAMP 型に変換するには CAST 関数 を使用する。

TO_TIMESTAMP_TZ 関数の内容

文字列式 string をフォーマット文字列 format でタイムゾーン付タイムスタンプに変換する。
フォーマット文字列 format が省略されると NLS_TIMESTAMP_TZ_FORMAT 書式が使用される。NLS_TIMESTAMP_TZ_FORMAT 環境変数 または、セッションパラメータ。

注意

Oracle 10g において MON 日付書式による月の表記が変更されている。
NLS_DATE_LANGUAGE が「日本」環境の場合に MON 書式で有効な日付要素は「n月」となる。Oracle 9i 以前では JAN などの英名表記で指定する。

TO_TIMESTAMP 使用例

SQL> select str, fmt, TO_TIMESTAMP(str, fmt) t_stamp from to_timestamp_sample;
 
STR                            FMT                        T_STAMP
------------------------------ -------------------------- ------------------------------
2007-11-30 19:05:20            YYYY-MM-DD HH24:MI:SS      2007-11-30 19:05:20.000000000
20060125010203123456789        FXYYYYMMDDHH24MISSFF       2006-01-25 01:02:03.123456789
2006/01/25 01.02.03.123456789  FMYYYY-MM-DD HH24:MI:SS.FF 2006-01-25 01:02:03.123456789
    ^  ^     ^  ^              ^^    ^  ^       ^  ^ -- FM のときはデリミタであれば寛容

TO_TIMESTAMP と TO_DATE の処理する内容は酷似しているため一般的な日付の変換の使用例は TO_DATE の使用例 を参照。

TO_TIMESTAMP_TZ 使用例

SQL> select str, fmt, TO_TIMESTAMP_TZ(str, fmt) t_stamp from to_timestamp_tz_sample;
 
STR                        FMT                          T_STAMP
-------------------------- ---------------------------- ----------------------------------
2007-11-12 01:45:56        YYYY-MM-DD HH24:MI:SS        07-11-12 01:45:56.000000000 +09:00
2007-01-01 01:00:00 00     YYYY-MM-DD HH:MI:SS TZH      07-01-01 01:00:00.000000000 +00:00
2007-11-30 09:05:20 08:30  YYYY-MM-DD HH:MI:SS TZH:TZM  07-11-30 09:05:20.000000000 +08:30
 
SQL> alter session set time_zone='Japan';
SQL> select str, fmt, TO_TIMESTAMP_TZ(str, fmt) t_stamp from to_timestamp_tz_sample;
 
STR                        FMT                          T_STAMP
-------------------------- ---------------------------- ----------------------------------
2007-11-12 01:45:56        YYYY-MM-DD HH24:MI:SS        07-11-12 01:45:56.000000000 JAPAN
2007-01-01 01:00:00 00     YYYY-MM-DD HH:MI:SS TZH      07-01-01 01:00:00.000000000 +00:00
2007-11-30 09:05:20 08:30  YYYY-MM-DD HH:MI:SS TZH:TZM  07-11-30 09:05:20.000000000 +08:30
 
SQL> alter session set time_zone='utc';
SQL> select str, fmt, TO_TIMESTAMP_TZ(str, fmt) t_stamp from to_timestamp_tz_sample;
 
STR                        FMT                          T_STAMP
-------------------------- ---------------------------- ----------------------------------
2007-11-12 01:45:56        YYYY-MM-DD HH24:MI:SS        07-11-12 01:45:56.000000000 UTC
2007-01-01 01:00:00 00     YYYY-MM-DD HH:MI:SS TZH      07-01-01 01:00:00.000000000 +00:00
2007-11-30 09:05:20 08:30  YYYY-MM-DD HH:MI:SS TZH:TZM  07-11-30 09:05:20.000000000 +08:30
 


SQL 関数 - TO_TIMESTAMP,TO_TIMESTAMP_TZ 関連

関連事項

 
アルファベット別 関数一覧 ショートカット
ABCDEFG
HILMNOP
RSTUVWX
日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ Oracle Web セミナー