目次

Search

  1. はじめに
  2. トランスフォーメーション言語
  3. 定数
  4. 演算子
  5. 変数
  6. 日付
  7. 関数
  8. カスタム関数の作成
  9. カスタム関数APIリファレンス

トランスフォーメーション言語リファレンス

トランスフォーメーション言語リファレンス

IS_DATE

IS_DATE

文字列値が正しい日付であるかどうかを返します。正しい日付とは、セッションで指定された日時形式で日付を表している文字列を意味します。テストしたい文字列がデフォルトの日付形式でない場合は、TO_DATEフォーマット文字列を使用して日付の形式を指定します。IS_DATEに渡された文字列が指定された形式文字列に一致しない場合には、関数はFALSE(0)を返します。 文字列がフォーマット文字列に一致する場合には、関数はTRUE(1)を返します。
IS_DATEは、文字列を評価して整数値を返します。
IS_DATE式の出力ポートは、文字列データ型または数値データ型でなければなりません。
IS_DATEを使用して、フラットファイル内のデータをテストまたはフィルタリングしてから、ターゲットに書き込むこともできます。
YYフォーマットの文字列の代わりに、IS_DATEを含むRRフォーマットの文字列を使用します。ほとんどの場合、RRとYYのフォーマット文字列は同じ値を返しますが、場合により、YYが誤った結果を返すことがあります。たとえば、式IS_DATE(‘02/29/00’, ‘YY’)は内部でIS_DATE(02/29/1900 00:00:00)として計算され、FALSEを返します。ただし、
PowerCenter統合サービス
は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
必須
文字列データ型であること。評価したい行を渡します。有効なトランスフォーメーション式を必要に応じて入力できます。
形式
オプション
正しいTO_DATE形式文字列を入力します。フォーマット文字列は、
string
引数の各部分と一致しなければなりません。たとえば、'Mar 15 1997 12:43:10AM'の文字列を渡す場合、フォーマット文字列'MON DD YYYY HH12:MI:SSAM'を使用する必要があります。フォーマット文字列を省略する場合は、文字列の値がセッションで指定された日付形式になっている必要があります。

戻り値

行が正しい日付の場合は、TRUE(1)。
行が正しい日付でない場合は、FALSE(0)。
式の中にNULLの値がある場合、またはフォーマット文字列がNULLである場合は、NULL。
フォーマット文字列は、日付区切り文字を含め、IS_DATE文字列の形式と一致しなければなりません。一致しない場合、
PowerCenter統合サービス
は不正確な値を返すか、レコードをスキップする可能性があります。

次の式は、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.7008'
1 (TRUE)
'02/31/1998 12:13:55.9204'
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ポートの値を検査して、正しい日付をそれぞれ日付値に変換します。値が正しい日付ではない場合、
PowerCenter統合サービス
は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'