ISDATE (Transact-SQL)

expression が有効な date、time、または 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 です。

トピック リンク アイコン Transact-SQL 構文表記規則

構文

ISDATE ( expression )

引数

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

戻り値の型

int

説明

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

ISDATE の戻り値は、SET DATEFORMATSET LANGUAGE、および、「default language サーバー構成オプションの構成」の設定に依存します。 例については、「例 C」を参照してください。

ISDATE 式の形式

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

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

ISDATE 式

ISDATE 戻り値

NULL

0

データ型」に列挙されているデータ型のうち、文字列、Unicode 文字列、日付/時刻以外のデータ型カテゴリの値。

0

text、ntext、image のいずれかに該当するデータ型の値。

0

秒の小数点以下桁数が 3 を超える値 (.0000 ~ .0000000... n)。 expression が datetime2 値の場合、ISDATE からは 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;

関連項目

参照

CAST および CONVERT (Transact-SQL)