関数リファレンス > 日付 > TO_DATEおよびIS_DATEフォーマット文字列
  

TO_DATEおよびIS_DATEフォーマット文字列

TO_DATE関数は、指定した形式の文字列をDate/Time値に変換します。一般に、TO_DATEはフラットファイルからの文字列をDate/Time値に変換するために使用します。TO_DATEフォーマット文字列は国際化されていないため、下の表に示す定義済みの形式で入力しなければなりません。
注: TO_DATEとIS_DATEでは、同じ種類のフォーマット文字列を使用します。
TO_DATE式を作成する場合、変換元の文字列の日付の各部分に対してフォーマット文字列を使用します。ソース文字列フォーマットおよびフォーマット文字列は、日付区切り文字を含め、必ず一致している必要があります。一致しない部分がある場合、データ統合は、文字列を変換せずにその行をスキップします。フォーマット文字列を省略する場合は、変換元の文字列がデフォルトの日付形式(MM/DD/YYYY HH24:MI:SS)になっていなければなりません。
IS_DATEは、値が正しい日付であるかどうかを検査する関数です。正しい日付とは、デフォルトの日付形式(MM/DD/YYYY HH24:MI:SS)で有効な日付を表している文字列を意味します。テストする文字列がこの日付形式ではない場合、以下の表に記載されたフォーマット文字列を使用して日付の形式を指定します。文字列が指定されたフォーマット文字列に一致しない場合、または正しい日付でない場合には、関数はFALSE(0)を返します。文字列がフォーマット文字列に一致し、有効な日付である場合には、関数はTRUE(1)を返します。IS_DATEフォーマット文字列は国際化されていないため、下の表に示す定義済みの形式で入力しなければなりません。
以下の表に、TO_DATEおよびIS_DATE関数で使用されるフォーマット文字列のリストを示します。
フォーマット文字列
説明
AM, a.m., PM, p.m.
午前または午後。これらのいずれかの形式文字列を使用して、時刻が午前か午後かを指定します。AMとA.M.、PMとP.M.はそれぞれ同じ値を返します。
DAY
曜日の英語名(9文字まで)。例:Wednesday。DAY形式文字列は大文字と小文字を区別しません。
DD
日(1~31)。
DDD
1年における通算日(001~366)。366はうるう年の場合です。
DY
曜日の英語名の3文字の略称。例:Wed。DY形式文字列は大文字と小文字を区別しません。
HH, HH12
時(1~12)。
HH24
時(0~23)。ゼロは午前(深夜)12時を表します。
J
修正ユリウス日。MJD形式の文字列を日付値に変換します。元の文字列の時刻部分を無視し、すべての日付に00:00:00の時刻を割り当てます。
例えば、TO_DATE('2451544', 'J' )の式は「2451544」を「Dec 31 1999 00:00:00」に変換します。
MI
分(0~59)。
MM
月(1~12)。
MONTH
月の英語名(9文字まで)。例:August。大文字と小文字は区別されません。
MON
月の英語名の3文字の略称。例:Aug。大文字と小文字は区別されません。
MS
ミリ秒(0-999)
NS
ナノ秒。TO_DATEおよびIS_DATEは、'NS'のフォーマットトークンを使用してサブ秒をサポートできます。単位はナノ秒になります。サブ秒の部分がミリ秒の場合でも、次の例の場合は、ゼロを3つ追加して使用できます。
TO_DATE('2005-05-02 09:23:34 123000', 'YYYY-MM-DD HH24:MI:SS NS')
TO_DATE('2005-05-02 09:23:34.123' || '000', 'YYYY-MM-DD HH24:MI:SS.NS')
TO_DATE('2005-05-02 09:23:34123000', 'YYYY-MM-DD HH24:MI:SSNS')
RR
4桁の年(1998、2034など)。変換元の文字列が2桁の年を含む場合に使用します。TO_DATEで使用すると、2桁の年が4桁の年に変換されます。
  • - 現在の年が50 - 99の場合。現在の年が50~99の間(例: 1998年)で、変換元の文字列に含まれる年の値が0~49の間である場合、データ統合は、次の世紀に変換元の文字列の2桁の年を足した値を返します。変換元の文字列に含まれる年の値が50~99の間である場合、データ統合は、現在の世紀に指定された2桁の年を足した値を返します。
  • - 現在の年が0 - 49の場合。現在の年が0~49の間(例: 2003年)で、変換元の文字列の年が0~49である場合、データ統合は、変換元の文字列の2桁の年を現在の世紀に足した値を返します。変換元の文字列の年が50~99の間である場合、データ統合は、変換元の文字列の2桁の年を前の世紀に足した値を返します。
SS
秒(0~59)。
SSSSS
深夜0時からの通算秒。TO_DATE式でSSSSSが使用されている場合、データ統合は、日付の時刻部分のみを評価します。
例えば、式TO_DATE(DATE_STR, ‘MM/DD/YYYY SSSSS’)は「12/31/1999 3783」を「12/31/1999 01:02:03」に変換します。
US
マイクロ秒(0-999999)
Y
Secure Agentが動作しているマシン上での現在の年の下1桁を、文字列値で置き換えます。
YY
Secure Agentが動作しているマシン上での現在の年の下2桁を、文字列値で置き換えます。
YYY
Secure Agentが動作しているマシン上での現在の年の下3桁を、文字列値で置き換えます。
YYYY
年の全4桁。2桁の年を渡すときには、この形式文字列は使用しないでください。代わりに、RRまたはYY形式を使用します。

要件

データ統合が予期する形式は、次の条件を満たすTO_DATE文字列です。

J、RR、およびSSSSSのフォーマット文字列を使った例を以下に示します。これ以外の例については、各関数の説明を参照してください。

J形式文字列

次の式は、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に設定されています。

RR形式文字列

次の式は、文字列を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

YY形式文字列

次の式は、文字列を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年を返します。

SSSSS形式文字列

次の式は、深夜からの通算秒を含む文字列を日付値に変換します。
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