IS_DATE
文字列値が正しい日付であるかどうかを返します。
正しい日付とは、デフォルトの日付形式(MM/DD/YYYY HH24:MI:SS)になっている文字列を意味します。テストしたい文字列がデフォルトの日付形式でない場合は、TO_DATEフォーマット文字列を使用して日付の形式を指定します。IS_DATEに渡された文字列が指定されたフォーマット文字列に一致しない場合には、関数はFALSE(0)を返します。文字列がフォーマット文字列に一致する場合には、関数はTRUE(1)を返します。
IS_DATEは、文字列を評価して整数値を返します。
IS_DATE式のターゲットカラムは、Stringデータ型またはNumericデータ型でなければなりません。
IS_DATEを使用して、フラットファイル内のデータをテストまたはフィルタリングしてから、ターゲットに書き込むこともできます。
YYフォーマットの文字列の代わりに、IS_DATEを含むRRフォーマットの文字列を使用します。ほとんどの場合、RRとYYのフォーマット文字列は同じ値を返しますが、場合により、YYが誤った結果を返すことがあります。たとえば、式IS_DATE(‘02/29/00’, ‘YY’)は内部でIS_DATE(02/29/1900 00:00:00)として計算され、FALSEを返します。ただし、データ統合はIS_DATE(‘02/29/00’, ‘RR’)の式をIS_DATE(02/29/2000 00:00:00)と計算し、TRUEを返します。前者の場合、1900年はうるう年ではないので、2月29日はありません。
注: IS_DATEでは、TO_DATEと同じフォーマット文字列を使用します。
構文
IS_DATE( value [,format] )
引数 | 必須/ オプション | 説明 |
---|
value | 必須 | 文字列データ型であること。評価したい行を渡します。有効な式を必要に応じて入力できます。 |
format | オプション | 正しいTO_DATEフォーマット文字列を入力します。フォーマット文字列は、string引数の各部分と一致しなければなりません。たとえば、'Mar 15 1997 12:43:10AM'の文字列を渡す場合、フォーマット文字列'MON DD YYYY HH12:MI:SSAM'を使用する必要があります。フォーマット文字列を省略する場合は、文字列値がデフォルトの日付形式(MM/DD/YYYY HH24:MI:SS)になっていなければなりません。 TO_DATEフォーマット文字列およびIS_DATEフォーマット文字列の詳細については、 TO_DATEおよびIS_DATEフォーマット文字列を参照してください。 |
戻り値
行が正しい日付の場合は、TRUE(1)。
行が正しい日付でない場合は、FALSE(0)。
式の中にNULLの値がある場合、またはフォーマット文字列がNULLである場合は、NULL。
フォーマット文字列は、日付区切り文字を含め、IS_DATE文字列の形式と一致しなければなりません。一致しない場合、データ統合は不正確な値を返すか行をスキップする可能性があります。
例
次の式は、INVOICE_DATEカラムの値が正しい日付であるかどうかを確認します。
IS_DATE( INVOICE_DATE )
この式は、以下のようなデータを返します。
INVOICE_DATE | RETURN VALUE |
---|
NULL | NULL |
'180' | 0 (FALSE) |
'04/01/98' | 0 (FALSE) |
'04/01/1998 00:12:15' | 1 (TRUE) |
'02/31/1998 12:13:55' | 0 (FALSE) (February does not have 31 days) |
'John Smith' | 0 (FALSE) |
次のIS_DATE式では、フォーマット文字列‘YYYY/MM/DD’が指定されています。
IS_DATE( INVOICE_DATE, 'YYYY/MM/DD' )
文字列がこの形式に一致しない場合、IS_DATEはFALSEを返します。
INVOICE_DATE | RETURN VALUE |
---|
NULL | NULL |
'180' | 0 (FALSE) |
'04/01/98' | 0 (FALSE) |
'1998/01/12' | 1 (TRUE) |
'1998/11/21 00:00:13' | 0 (FALSE) |
'1998/02/31' | 0 (FALSE) (February does not have 31 days) |
'John Smith' | 0 (FALSE) |
次の例では、IS_DATEを使ってデータをテストしてから、TO_DATEを使って文字列を日付に変換する方法を示しています。この式は、INVOICE_DATEカラムの値を検査して、正しい日付をそれぞれ日付値に変換します。値が正しい日付ではない場合、データ統合はERRORを返し、その行をスキップします。
この例はDate/Time値を返します。そのため、式のターゲットカラムはDate/Time型でなければなりません。
IIF( IS_DATE ( INVOICE_DATE, 'YYYY/MM/DD' ), TO_DATE( INVOICE_DATE ), ERROR('Not a valid date' ) )
INVOICE_DATE | RETURN VALUE |
---|
NULL | NULL |
'180' | 'Not a valid date' |
'04/01/98' | 'Not a valid date' |
'1998/01/12' | 1998/01/12 |
'1998/11/21 00:00:13' | 'Not a valid date' |
'1998/02/31' | 'Not a valid date' |
'John Smith' | 'Not a valid date' |