ISDATE (Transact-)SQL)

  • 03/14/2017
  • 読了3分
    • c
    • j
    • r
    • M
    • i
    • +6

に適用される。 SQL Server (サポートされるすべてのバージョン) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse

式が有効な日付、時刻、または datetime 値であれば 1、そうでない場合は 0 を返します。

ISDATEは、式がdatetime2値の場合は0を返します。

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

Transact-SQL 構文の規約

構文

ISDATE ( expression )

注意

SQL Server 2014 以前の Transact-SQL 構文は、以前のバージョンのドキュメントをご覧ください。

引数

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

Return Type

int

Remarks

ISDATE は CONVERT 関数と使用した場合のみ決定性があり、もし CONVERT style 引数が指定されていて style は 0、100、9 または 109 と同じではいけません。

ISDATの戻り値は、SET DATEFORMAT、SET LANGUAGE、Configure the default language Server Configuration Optionで設定した内容に依存します。

ISDATE expression Formats

ISDATEが1を返す有効な形式の例については、datetimeおよびsmalldatetimeトピック内の「サポートされているdatetime用のString Literal Formats」節を参照してください。 その他の例については、CASTとCONVERTの「引数」セクションの入力/出力欄も参照してください。

次の表は、有効ではなく、0またはエラーを返す入力式形式をまとめたものです。

ISDATE 式 ISDATE 戻り値
NULL 0
文字列、ユニコード文字列または日時以外のデータ型のカテゴリでデータ型 にリストされているデータ型の値です。 0
テキスト、ntext、またはイメージデータ型の値。 0
秒精度スケール3より大きい、あらゆる値(.0000~.0000000・・・n). ISDATEは式がdatetime2値であれば0を返しますが、式が有効なdatetime値であれば1を返します。 0
有効な日付と無効な値、例えば1995-10-1aが混在するすべての値。 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 DATEFORMATSET 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とParallel Data Warehouse

C. ISDATE を使用して有効な datetime 式をテストする

次の例では、ISDATE を使用して文字列が有効な datetime かどうかをテストします。

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

See Also

CAST と CONVERT (Transact-SQL)

コメントを残す

メールアドレスが公開されることはありません。