SQL Serverでは、ISDATE()
を使用できます。 値が有効な日付であるかどうかをチェックする関数。
具体的には、この関数は値が有効な日付であるかどうかのみをチェックします 、時間 、または日時 値ですが、 datetime2 ではありません 価値。 datetime2を指定した場合 値、ISDATE()
日付ではないことが通知されます(0
が返されます) 。
この記事には、この関数の例が含まれています。
構文
まず、構文は次のとおりです。
ISDATE ( expression )
expression
の場所 テストする式です。
例1-有効日
有効な式を使用した例を次に示します。
SELECT ISDATE('2000-01-01') AS Result;
結果:
+----------+ | Result | |----------| | 1 | +----------+
これは1
を返します 、つまり、有効な日付 、時間 、または日時 値。
例2–無効な日付
無効な式を使用した例を次に示します。
SELECT ISDATE('2000-01-01 00:00:00.0000000') AS Result;
結果:
+----------+ | Result | |----------| | 0 | +----------+
これは0
を返します 、つまり、有効な日付ではありません 、時間 、または日時 値。
例3–戻り値の使用
条件ステートメントを使用して、(単に0
を表示するのではなく、戻り値を利用できます。 または1
。
有効な日付を単純に印刷する基本的な例を次に示します。 または無効な日付 、戻り値が1
であるかどうかによって異なります または0
:
IF ISDATE('2000-01-01') = 1 PRINT 'Valid Date' ELSE PRINT 'Invalid Date';
結果:
Valid Date
例4–言語設定
ISDATE()
の戻り値 LANGUAGE
によって異なります およびDATEFORMAT
設定。
これは、LANGUAGE
に応じて同じ値が異なる結果を返す方法を示す例です。 使用した設定。
イギリス
SET LANGUAGE British; SELECT ISDATE('20/01/2000') AS '20/01/2000 in British';
結果:
Changed language setting to British. +-------------------------+ | 20/01/2000 in British | |-------------------------| | 1 | +-------------------------+
us_english
SET LANGUAGE us_english; SELECT ISDATE('20/01/2000') AS '20/01/2000 in us_english';
結果:
Changed language setting to us_english. +----------------------------+ | 20/01/2000 in us_english | |----------------------------| | 0 | +----------------------------+
これは、British
が原因で発生します dd / MM / yyyyを使用します us_english
でフォーマットする MM / dd / yyyを使用します 。
例5–DATEFORMAT設定
前述のように、ISDATE()
の戻り値 DATEFORMAT
にも依存します 設定。
これは、DATEFORMAT
に応じて同じ値が異なる結果を返す方法を示す例です。 使用した設定。
dmy
SET DATEFORMAT dmy; SELECT ISDATE('20/01/2000') AS '20/01/2000 while DATEFORMAT is dmy';
結果:
+--------------------------------------+ | 20/01/2000 while DATEFORMAT is dmy | |--------------------------------------| | 1 | +--------------------------------------+
mdy
SET DATEFORMAT mdy; SELECT ISDATE('20/01/2000') AS '20/01/2000 while DATEFORMAT is mdy';
結果:
+--------------------------------------+ | 20/01/2000 while DATEFORMAT is mdy | |--------------------------------------| | 0 | +--------------------------------------+