TO_DATE 文字列をそれと同じ形式で日付データ型に変換します。元の文字列の形式を指定するには、TO_DATEフォーマット文字列を使用します。
TO_DATE式の場合、ターゲットカラムはdate/timeでなければなりません。
TO_DATEで2桁の年を変換する場合には、RRまたはYYのフォーマット文字列を使ってください。YYYYフォーマット文字列を使用してはなりません。
構文 TO_DATE( string [, format ] )
引数
必須/
オプション
説明
string
必須
文字列データ型であること。日付に変換したい値を渡します。有効な式を必要に応じて入力できます。
format
オプション
正しいTO_DATEフォーマット文字列を入力します。フォーマット文字列は、string 引数の各部分と一致しなければなりません。例えば、‘Mar 15 1998 12:43:10AM’の文字列を渡す場合、フォーマット文字列‘MON DD YYYY HH12:MI:SSAM’を使用する必要があります。フォーマット文字列を省略する場合は、文字列値がデフォルトの日付形式(MM/DD/YYYY HH24:MI:SS)になっていなければなりません。
TO_DATEフォーマット文字列の詳細については、
TO_DATEおよびIS_DATEフォーマット文字列 を参照してください。
戻り値 日付。
TO_DATEは常に日付と時刻を返します。時刻値を含まない文字列を渡すと、返される日付の時刻は常に00:00:00になります。この関数の結果は、Dateデータ型を持つ任意のターゲット列にマッピングできます。
関数にNULL値を渡した場合はNULLです。
フォーマット文字列は、日付区切り文字を含め、TO_DATE文字列の形式と一致しなければなりません。一致しない場合、データ統合 は不正確な値を返すか行をスキップする可能性があります。
例 次の式は、DATE_PROMISEDカラムの文字列の日付値を返します。TO_DATEは常に日付と時刻を返します。時刻値を含まない文字列を渡すと、返される日付の時刻は常に00:00:00になります。20世紀にセッションを実行した場合、年の最初の2桁は19になります。データ統合 を実行しているコンピュータの現在の年は1998です。
TO_DATE( DATE_PROMISED, 'MM/DD/YY' )
DATE_PROMISED
RETURN VALUE
'01/22/98'
Jan 22 1998 00:00:00
'05/03/98'
May 3 1998 00:00:00
'11/10/98'
Nov 10 1998 00:00:00
'10/19/98'
Oct 19 1998 00:00:00
NULL
NULL
次の式は、DATE_PROMISEDカラムの文字列の日付と時間の値を返します。時間の値を持たない文字列が渡された場合、データ統合 は、その行をエラー行ファイルに書き込みます。20世紀にセッションを実行した場合、年の最初の2桁は19になります。データ統合 を実行しているコンピュータの現在の年は1998です。
TO_DATE( DATE_PROMISED, 'MON DD YYYY HH12:MI:SSAM' )
DATE_PROMISED
RETURN VALUE
'Jan 22 1998 02:14:56PM'
Jan 22 1998 02:14:56PM
'Mar 15 1998 11:11:11AM'
Mar 15 1998 11:11:11AM
'Jun 18 1998 10:10:10PM'
Jun 18 1998 10:10:10PM
'October 19 1998'
None. データ統合 writes the row into the error rows file.
NULL
NULL
次の式は、SHIP_DATE_MJD_STRINGカラムの文字列をデフォルト日付形式の日付値に変換します。
TO_DATE (SHIP_DATE_MJD_STR, 'J')
SHIP_DATE_MJD_STR
RETURN_VALUE
'2451544'
Dec 31 1999 00:00:00
'2415021'
Jan 1 1900 00:00:00
Jフォーマット文字列には日付の時間部分が含まれないため、戻り値では時間が00:00:00に設定されています。
次の式は、文字列を4桁形式の年に変換します。現在の年は1998です。
TO_DATE( DATE_STR, 'MM/DD/RR')
DATE_STR
RETURN VALUE
'04/01/98'
04/01/1998 00:00:00
'08/17/05'
08/17/2005 00:00:00
次の式は、文字列を4桁形式の年に変換します。現在の年は1998です。
TO_DATE( DATE_STR, 'MM/DD/YY')
DATE_STR
RETURN VALUE
'04/01/98'
04/01/1998 00:00:00
'08/17/05'
08/17/1905 00:00:00
注: 2番目の行については、RRは2005年を返しますが、YYは 1905年を返します。
次の式は、文字列を4桁形式の年に変換します。現在の年は1998です。
TO_DATE( DATE_STR, 'MM/DD/Y')
DATE_STR
RETURN VALUE
'04/01/8'
04/01/1998 00:00:00
'08/17/5'
08/17/1995 00:00:00
次の式は、文字列を4桁形式の年に変換します。現在の年は1998です。
TO_DATE( DATE_STR, 'MM/DD/YYY')
DATE_STR
RETURN VALUE
'04/01/998'
04/01/1998 00:00:00
'08/17/995'
08/17/1995 00:00:00
次の式は、深夜からの通算秒を含む文字を日付値に変換します。
TO_DATE( DATE_STR, 'MM/DD/YYYY SSSSS')
DATE_STR
RETURN_VALUE
'12/31/1999 3783'
12/31/1999 01:02:03
'09/15/1996 86399'
09/15/1996 23:59:59
ターゲットで複数の異なる日付形式を使用できる場合は、DECODE関数でTO_DATEとIS_DATEを使用して、使用可能な形式をテストできます。以下に例を示します。
DECODE( TRUE, --test first format IS_DATE( CLOSE_DATE,'MM/DD/YYYY HH24:MI:SS' ), --if true, convert to date TO_DATE( CLOSE_DATE,'MM/DD/YYYY HH24:MI:SS' ), --test second format; if true, convert to date IS_DATE( CLOSE_DATE,'MM/DD/YYYY'), TO_DATE( CLOSE_DATE,'MM/DD/YYYY' ), --test third format; if true, convert to date IS_DATE( CLOSE_DATE,'MON DD YYYY'), TO_DATE( CLOSE_DATE,'MON DD YYYY'), --if none of the above ERROR( 'NOT A VALID DATE') )
TO_CHARとTO_DATEを組み合わせて次のような関数を記述すれば、月の数値を対応する月の文字列に変換することができます。
TO_CHAR( TO_DATE( numeric_month, 'MM' ), 'MONTH' )