ISDATE (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

expression が有効な datetime 値の場合は 1 を返し、それ以外の場合は 0 を返します。

expressiondatetime2 値の場合、ISDATE は 0 を返します。

Transact-SQL の日付と時刻のデータ型および関数の概要については、「日付と時刻のデータ型および関数 (Transact-SQL)」を参照してください。 datetime データの範囲は 1753-01-01 から 9999-12-31、date データの範囲は 0001-01-01 から 9999-12-31 です。

Transact-SQL 構文表記規則

構文

ISDATE ( expression )

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

式 (expression)
文字列、または文字列に変換できるです。 式は 4,000 文字未満にする必要があります。 datetime および smalldatetime を除く日付および時刻データ型は、ISDATE の引数として使用できません。

戻り値の型

int

解説

ISDATE は、CONVERT 関数と共に使用され、CONVERT スタイル パラメーターが指定されており、スタイルが 0、100、9、または 109 と等しくない場合にのみ決定的関数になります。

ISDATE の戻り値は、SET DATEFORMATSET LANGUAGE、および default language サーバー構成オプションの構成の設定に依存します。

ISDATE 式の形式

ISDATE で 1 が返される有効な形式の例については、「datetime」および「smalldatetime」の各トピックにある「datetime でサポートされる文字列リテラル形式」を参照してください。 その他の例については、「CAST および CONVERT」の「引数」セクションの入力/出力列を参照してください。

次の表は、無効な式の形式をまとめたものです。このような式を入力値として渡すと、0 またはエラーが返されます。

ISDATE 式 ISDATE 戻り値
NULL 0
データ型」に列挙されているデータ型のうち、文字列、Unicode 文字列、日付/時刻以外のデータ型カテゴリの値。 0
textntext、または image データ型の値。 0
3 を超える秒の有効桁数のスケールを持つ任意の値 (.0000 から 0000000...n)。 ISDATE は、expressiondatetime2 値の場合は 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';  

参照

CAST および CONVERT (Transact-SQL)