ISDATE (Transact-SQL)
expression が有効な date、time、または datetime の値である場合は 1 を返します。それ以外の場合は 0 を返します。
Transact-SQL の日付と時刻のデータ型および関数の概要については、「日付と時刻の関数 (Transact-SQL)」を参照してください。日付と時刻のデータ型および関数の一般的な例については、「日時データの使用」を参照してください。
構文
ISDATE ( expression )
戻り値の型
int
説明
ISDATE は、CONVERT 関数と共に使用され、CONVERT スタイル パラメーターが指定されており、スタイルが 0、100、9、または 109 と等しくない場合にのみ決定的関数になります。
ISDATE の戻り値は、SET DATEFORMAT、SET LANGUAGE、および、既定の言語オプションの設定に依存します。例については、「例 C」を参照してください。
ISDATE 式の形式
ISDATE で 1 が返される有効な形式の例については、「datetime」および「smalldatetime」の各トピックにある「datetime でサポートされる文字列リテラル形式」を参照してください。その他の例については、「CAST および CONVERT」の「引数」セクションの入力/出力列を参照してください。
次の表は、無効な式の形式をまとめたものです。このような式を入力値として渡すと、0 またはエラーが返されます。
ISDATE 式 |
ISDATE 戻り値 |
---|---|
NULL |
0 |
「データ型」に列挙されているデータ型のうち、文字列、Unicode 文字列、日付/時刻以外のデータ型カテゴリの値。 |
0 |
text、ntext、image のいずれかに該当するデータ型の値。 |
0 |
秒の小数点以下桁数が 3 を超える値 (.0000 ~ .0000000...n)。 |
0 |
有効な日付と無効な値を組み合わせた値 (1995-10-1a など)。 |
0 |
例
A. ISDATE を使用して datetime 式が有効かどうかをテストする
次の例は、ISDATE を使用して、文字列が有効な datetime かどうかをテストする方法を示しています。
IF ISDATE('2009-05-12 10:19:41.177') = 1
PRINT 'VALID'
ELSE
PRINT 'INVALID'
B. SET DATEFORMAT と SET LANGUAGE 設定が戻り値に与える影響を確認する
次のステートメントでは、SET DATEFORMAT および SET LANGUAGE の各種設定と、その結果として返される値の関係を示しています。
/* Use these sessions settings. */
SET LANGUAGE us_english;
SET DATEFORMAT mdy;
/* Expression in mdy dateformat */
SELECT ISDATE('04/15/2008'); --Returns 1.
/* Expression in mdy dateformat */
SELECT ISDATE('04-15-2008'); --Returns 1.
/* Expression in mdy dateformat */
SELECT ISDATE('04.15.2008'); --Returns 1.
/* Expression in myd dateformat */
SELECT ISDATE('04/2008/15'); --Returns 1.
SET DATEFORMAT mdy;
SELECT ISDATE('15/04/2008'); --Returns 0.
SET DATEFORMAT mdy;
SELECT ISDATE('15/2008/04'); --Returns 0.
SET DATEFORMAT mdy;
SELECT ISDATE('2008/15/04'); --Returns 0.
SET DATEFORMAT mdy;
SELECT ISDATE('2008/04/15'); --Returns 1.
SET DATEFORMAT dmy;
SELECT ISDATE('15/04/2008'); --Returns 1.
SET DATEFORMAT dym;
SELECT ISDATE('15/2008/04'); --Returns 1.
SET DATEFORMAT ydm;
SELECT ISDATE('2008/15/04'); --Returns 1.
SET DATEFORMAT ymd;
SELECT ISDATE('2008/04/15'); --Returns 1.
SET LANGUAGE English;
SELECT ISDATE('15/04/2008'); --Returns 0.
SET LANGUAGE Hungarian;
SELECT ISDATE('15/2008/04'); --Returns 0.
SET LANGUAGE Swedish;
SELECT ISDATE('2008/15/04'); --Returns 0.
SET LANGUAGE Italian;
SELECT ISDATE('2008/04/15'); --Returns 1.
/* Return to these sessions settings. */
SET LANGUAGE us_english;
SET DATEFORMAT mdy;