文字列をタイムスタンプ型に変換
- TO_TIMESTAMP ( string [, format [, nls_param]] )
- TO_TIMESTAMP ( string [ DEFAULT ret_val ON CONVERSION ERROR ] ↵
[, format [, nls_param]] )
return [ timestamp ]
- TO_TIMESTAMP_TZ ( string [, format [, nls_param]] )
- TO_TIMESTAMP_TZ ( string [ DEFAULT ret_val ON CONVERSION ERROR ] ↵
[, format [, nls_param]] )
return [ timestamp with timezone]
string | 文字列式、数値式(ユリウス日) | |
ret_val | 変換エラー時のデフォルト値 | |
format | フォーマット文字列 | NLS_TIMESTAMP_FORMAT |
nls_param | 各国語サポートパラメータ | NLS セッションパラメータ依存 |
- フォーマット書式に従って変換されたタイムスタンプ、または、タイムゾーン付のタイムスタンプ
Oracle 12c R2 以降の場合、format 書式にて変換出来ない場合 ret_val を戻すことが可能。
フォーマット文字列
(注意) DEFAULT ~ ON CONVERSION ERROR を使用した場合、リテラル に制限される。
各国語サポートパラメータ
NLS_CALENDAR についてはマニュアルには表記がないので正式な機能か不明
nls_param の種類 | 設定例 |
NLS_DATE_LANGUAGE | ENGLISH |
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 関連
関連事項