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