ISDATE (Transact-SQL)
適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
expression が有効な datetime 値の場合は 1 を返し、それ以外の場合は 0 を返します。
expression が datetime2 値の場合、ISDATE は 0 を返します。
Transact-SQL の日付と時刻のデータ型および関数の概要については、「日付と時刻のデータ型および関数 (Transact-SQL)」を参照してください。 datetime データの範囲は 1753-01-01 から 9999-12-31、date データの範囲は 0001-01-01 から 9999-12-31 です。
構文
ISDATE ( expression )
引数
式 (expression)
文字列、または文字列に変換できる式です。 式は 4,000 文字未満にする必要があります。 datetime および smalldatetime を除く日付および時刻データ型は、ISDATE の引数として使用できません。
戻り値の型
int
解説
ISDATE は、CONVERT 関数と共に使用され、CONVERT スタイル パラメーターが指定されており、スタイルが 0、100、9、または 109 と等しくない場合にのみ決定的関数になります。
ISDATE の戻り値は、SET DATEFORMAT、SET LANGUAGE、および default language サーバー構成オプションの構成の設定に依存します。
ISDATE 式の形式
ISDATE で 1 が返される有効な形式の例については、「datetime」および「smalldatetime」の各トピックにある「datetime でサポートされる文字列リテラル形式」を参照してください。 その他の例については、「CAST および CONVERT」の「引数」セクションの入力/出力列を参照してください。
次の表は、無効な式の形式をまとめたものです。このような式を入力値として渡すと、0 またはエラーが返されます。
ISDATE 式 | ISDATE 戻り値 |
---|---|
NULL | 0 |
「データ型」に列挙されているデータ型のうち、文字列、Unicode 文字列、日付/時刻以外のデータ型カテゴリの値。 | 0 |
text、ntext、または image データ型の値。 | 0 |
3 を超える秒の有効桁数のスケールを持つ任意の値 (.0000 から 0000000...n)。 ISDATE は、expression が datetime2 値の場合は 0 を返し、expression が有効な datetime 値の場合は 1 を返します。 | 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;
例: Azure Synapse Analytics、Analytics Platform System (PDW)
C. ISDATE を使用して datetime 式が有効かどうかをテストする
次の例は、ISDATE
を使用して、文字列が有効な datetime かどうかをテストする方法を示しています。
IF ISDATE('2009-05-12 10:19:41.177') = 1
SELECT 'VALID';
ELSE
SELECT 'INVALID';