TO_DATE
構文
目的
TO_DATEは、charをDATEデータ型の値に変換します。
charには、CHAR、VARCHAR2、NCHARまたはNVARCHAR2のデータ型の文字列と評価される任意の式を指定できます。
ノート:
このファンクションは、データを別の日時データ型へは変換しません。他の日時変換の詳細は、「TO_TIMESTAMP」、「TO_TIMESTAMP_TZ」、「TO_DSINTERVAL」および「TO_YMINTERVAL」を参照してください。
オプションのDEFAULT return_value ON CONVERSION ERROR句により、charからDATEへの変換中にエラーが発生した場合にこのファンクションで戻される値を指定できます。charの評価中にエラーが発生した場合、この句による影響はありません。return_valueは式またはバインド変数にすることができ、CHAR、VARCHAR2、NCHARまたはNVARCHAR2のデータ型の文字列、あるいはNULLと評価される必要があります。charをDATEに変換する場合と同じ方法を使用して、return_valueがDATEに変換されます。return_valueをDATEに変換できない場合は、エラーが戻されます。
fmtは、charの書式を指定する日時書式モデルです。fmtを指定しない場合、charはデフォルトの日付書式である必要があります。デフォルトの日付フォーマットは、NLS_TERRITORY初期化パラメータによって暗黙的に決まります。NLS_DATE_FORMATパラメータを使用して明示的に設定することもできます。fmtがJ(ユリウス日)の場合、charは整数である必要があります。
注意:
次の項の例に示すとおり、TO_DATEでは、常に書式マスク(fmt)を指定することをお薦めします。書式マスクを指定しないと、このファンクションは、charがNLS_TERRITORYまたはNLS_DATE_FORMATパラメータで指定されたものと同じ書式を使用している場合にのみ有効になります。さらに、依存性を回避するために明示的な書式マスクが指定されていない場合は、データベース間でファンクションが不安定になることがあります。
'nlsparam'引数には、日付に変換されるテキスト文字列の言語を指定します。この引数は、次の書式で指定します。
'NLS_DATE_LANGUAGE = language'
引数charにDATE値を持つTO_DATEファンクションは使用しないでください。戻されるDATE値は、fmtまたはデフォルトの日付書式によって、元のcharとは異なる世紀の値を持つことがあります。
このファンクションは、CLOBデータを直接的にサポートしていません。ただし、暗黙的なデータ変換を使用してCLOBを引数として渡すことはできます。
関連項目:
詳細は、「日時書式モデル」および「データ型の比較規則」を参照してください。
例
次の例では、文字列を日付に変換します。
SELECT TO_DATE(
'January 15, 1989, 11:00 A.M.',
'Month dd, YYYY, HH:MI A.M.',
'NLS_DATE_LANGUAGE = American')
FROM DUAL;
TO_DATE('
---------
15-JAN-89
戻された値は、NLS_TERRITORYパラメータが'AMERICA'に設定されている場合は、デフォルトの日付書式を反映します。異なるNLS_TERRITORYの値が設定されている場合は、異なるデフォルトの日付書式となります。
ALTER SESSION SET NLS_TERRITORY = 'KOREAN';
SELECT TO_DATE(
'January 15, 1989, 11:00 A.M.',
'Month dd, YYYY, HH:MI A.M.',
'NLS_DATE_LANGUAGE = American')
FROM DUAL;
TO_DATE(
--------
89/01/15次の例では、月のスペルが誤っていることで、指定した式をDATE値に変換できないため、デフォルト値が戻されます。
SELECT TO_DATE('Febuary 15, 2016, 11:00 A.M.'
DEFAULT 'January 01, 2016 12:00 A.M.' ON CONVERSION ERROR,
'Month dd, YYYY, HH:MI A.M.') "Value"
FROM DUAL;
Value
---------
01-JAN-16
