6

SQL Server で日付文字列が MM/DD/YYYY 形式であるかどうかを確認するにはどうすればよいですか?

4

4 に答える 4

17
SET DATEFORMAT MDY;
SELECT CASE WHEN ISDATE(@string) = 1 
  AND @string LIKE '[0-1][0-9]/[0-3][0-9]/[1-2][0-9][0-9][0-9]' 
  THEN 1 ELSE 0 END;

結果が 1 の場合、それは有効な日付ですが、ユーザーが意図した日付であるという保証はありません。彼らが入力した場合:

06/07/2012

6 月 7 日なのか 7 月 6 日なのかを知る方法はありません。最善の策は、ユーザーにドロップダウンまたはカレンダー コントロールから日付を選択させることです。これにより、形式を制御し、不要な解釈を避けることができます。アプリケーション層は、厳密に型指定された変数/パラメーターを使用して、適切に型指定された列に挿入できます。

于 2012-09-04T15:17:35.507 に答える
4

MDY かどうかを確認するために SQL Server の dateformat を使用している場合は、次を使用します。

dbcc useroptions

そしてdateformat Set Optionを見てください

于 2012-09-04T15:23:52.867 に答える
3

CONVERT関数を使用して、日付をこの形式MM/DD/YYYYの日付文字列に変換します

select convert(varchar(10),getdate(),101)

出力は 2012 年 9 月 8 日現在のものになります。

09/08/2012

日付フィールドがnullかどうかを確認する以外は、検証する必要はありません

于 2012-09-08T22:16:31.310 に答える
0

データベースの外でそれを行う必要があります。データベースは、datetime を独自の形式で内部的に格納します。日付が保存されている形式を読み取ることができるとは思いません。たとえば、dd/mm/yyyy や yyyy/mm/dd など、好きな方法で読み取ることができます。

できることは、任意の日付フィールドについて、データベースの外部でこの値を確認することです。そのために正規表現を使用できます。しかし、それはデータベースの外になります。

于 2012-09-04T15:23:56.303 に答える