MSドキュメント状態ISDATE()
SQL Server 2012のISDATE()
1を返し、その式が有効な日付、時間、または日時の値である場合には、そうでない場合、0
以下の例では、なぜ0
が返されますか?
DECLARE @DT VARCHAR(30) = '1/4/1752'
SELECT
ISDATE(@DT),
TRY_CONVERT(DATE, @DT, 101),
TRY_CONVERT(DATETIME, @DT),
TRY_CAST(@DT as DATE),
TRY_CAST(@DT AS DATETIME)
戻り
0 1752-01-04 NULL 1752-01-04 NULL
1753に変更した日付をと...
1 1753-01-04 1753-01-04 00:00:00.000 1753-01-04 1753-01-04 00:00:00.000
select ISDATE('17521231'), ISDATE('17530101') gives
0 1
'17520401' *は有効な' DATETIME2'値ですが、有効な 'DATETIME'値ではないので' ISDATE'も0を返します.Gordonの示唆したような 'TRY_CONVERT'アプローチはこのケースをカバーします正しくも。 (そして、ドキュメンテーションはおそらく微調整が必要です - '17520401'は有効な' DATE'ですが、明らかに "有効な日付値"ではありません。) 'ISDATE'自体の動作は変更されない可能性があります下位互換性に関する懸念。 –
http://stackoverflow.com/a/3310588/2975396 – TheGameiswar
私はこれが重複していないと思います。ドキュメントの '日付/時刻データの範囲は1753-01-01から9999-12-31までですが、日付データの範囲は0001-01-01〜9999-12-31.'を返し、 '式が有効な日付、時刻、または日時の値であれば1を返します。そうでなければ、0. – TheGameiswar