ISDATE (Transact-SQL)ISDATE (Transact-SQL)

適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics はいParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics はいParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse

expression が有効な datetime、または datetime 値の場合は 1 を返し、それ以外の場合は 0 を返します。Returns 1 if the expression is a valid date, time, or datetime value; otherwise, 0.

expressiondatetime2 値の場合、ISDATE は 0 を返します。ISDATE returns 0 if the expression is a datetime2 value.

すべての Transact-SQLTransact-SQL 日付および時刻のデータ型と関数の概要については、「日付と時刻のデータ型および関数 (Transact-SQL)」を参照してください。For an overview of all Transact-SQLTransact-SQL date and time data types and functions, see Date and Time Data Types and Functions (Transact-SQL). datetime データの範囲は 1753-01-01 から 9999-12-31、date データの範囲は 0001-01-01 から 9999-12-31 です。Note that the range for datetime data is 1753-01-01 through 9999-12-31, while the range for date data is 0001-01-01 through 9999-12-31.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

ISDATE ( expression )

注意

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

引数Arguments

式 (expression)expression
文字列、または文字列に変換できるです。Is a character string or expression that can be converted to a character string. 式は 4,000 文字未満にする必要があります。The expression must be less than 4,000 characters. datetime および smalldatetime を除く日付および時刻データ型は、ISDATE の引数として使用できません。Date and time data types, except datetime and smalldatetime, are not allowed as the argument for ISDATE.

戻り値の型Return Type

intint

解説Remarks

ISDATE は、CONVERT 関数と共に使用され、CONVERT スタイル パラメーターが指定されており、スタイルが 0、100、9、または 109 と等しくない場合にのみ決定的関数になります。ISDATE is deterministic only if you use it with the CONVERT function, if the CONVERT style parameter is specified, and style is not equal to 0, 100, 9, or 109.

ISDATE の戻り値は、SET DATEFORMATSET LANGUAGE、および default language サーバー構成オプションの構成の設定に依存します。The return value of ISDATE depends on the settings set by SET DATEFORMAT, SET LANGUAGE and Configure the default language Server Configuration Option.

ISDATE 式の形式ISDATE expression Formats

ISDATE で 1 が返される有効な形式の例については、「datetime」および「smalldatetime」の各トピックにある「datetime でサポートされる文字列リテラル形式」を参照してください。For examples of valid formats for which ISDATE will return 1, see the section "Supported String Literal Formats for datetime" in the datetime and smalldatetime topics. その他の例については、「CAST および CONVERT」の「引数」セクションの入力/出力列を参照してください。For additional examples, also see the Input/Output column of the "Arguments" section of CAST and CONVERT.

次の表は、無効な式の形式をまとめたものです。このような式を入力値として渡すと、0 またはエラーが返されます。The following table summarizes input expression formats that are not valid and that return 0 or an error.

ISDATE 式ISDATE expression ISDATE 戻り値ISDATE return value
NULLNULL 00
データ型」に列挙されているデータ型のうち、文字列、Unicode 文字列、日付/時刻以外のデータ型カテゴリの値。Values of data types listed in Data Types in any data type category other than character strings, Unicode character strings, or date and time. 00
textntext、または image データ型の値。Values of text, ntext, or image data types. 00
3 を超える秒の有効桁数のスケールを持つ任意の値 (.0000 から 0000000...n)。Any value that has a seconds precision scale greater than 3, (.0000 through .0000000...n). ISDATE は、expressiondatetime2 値の場合は 0 を返し、expression が有効な datetime 値の場合は 1 を返します。ISDATE will return 0 if the expression is a datetime2 value, but will return 1 if the expression is a valid datetime value. 00
有効な日付と無効な値を組み合わせた任意の値 (1995-10-1a など)。Any value that mixes a valid date with an invalid value, for example 1995-10-1a. 00

Examples

A.A. ISDATE を使用して datetime 式が有効かどうかをテストするUsing ISDATE to test for a valid datetime expression

次の例は、ISDATE を使用して、文字列が有効な datetime かどうかをテストする方法を示しています。The following example shows you how to use ISDATE to test whether a character string is a valid datetime.

IF ISDATE('2009-05-12 10:19:41.177') = 1  
    PRINT 'VALID'  
ELSE  
    PRINT 'INVALID';  

B.B. SET DATEFORMAT と SET LANGUAGE 設定が戻り値に与える影響を確認するShowing the effects of the SET DATEFORMAT and SET LANGUAGE settings on return values

次のステートメントでは、SET DATEFORMAT および SET LANGUAGE の各種設定と、その結果として返される値の関係を示しています。The following statements show the values that are returned as a result of the settings of SET DATEFORMAT and 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 AnalyticsAzure Synapse AnalyticsParallel Data WarehouseParallel Data WarehouseExamples: Azure Synapse AnalyticsAzure Synapse Analytics and Parallel Data WarehouseParallel Data Warehouse

C.C. ISDATE を使用して datetime 式が有効かどうかをテストするUsing ISDATE to test for a valid datetime expression

次の例は、ISDATE を使用して、文字列が有効な datetime かどうかをテストする方法を示しています。The following example shows you how to use ISDATE to test whether a character string is a valid datetime.

IF ISDATE('2009-05-12 10:19:41.177') = 1  
    SELECT 'VALID';  
ELSE  
    SELECT 'INVALID';  

参照See Also

CAST および CONVERT (Transact-SQL)CAST and CONVERT (Transact-SQL)