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 | +--------------------------------------+