次の方法で共有


ISDATE (Transact-SQL)

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

Transact-SQL の日付と時刻のデータ型および関数の概要については、「日付と時刻の関数 (Transact-SQL)」を参照してください。日付と時刻のデータ型および関数の一般的な例については、「日時データの使用」を参照してください。

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

構文

ISDATE ( expression )

引数

  • expression
    文字列か、文字列に変換できるです。式は 4,000 文字未満にする必要があります。

戻り値の型

int

説明

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

ISDATE の戻り値は、SET DATEFORMATSET 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;