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

如果您在 SQL Server 日期格式之后查看它是否为 MDY,请使用:

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

不需要验证,除了检查日期字段是否为空

于 2012-09-08T22:16:31.310 回答
0

您必须在数据库之外执行此操作。数据库以自己的格式在内部存储日期时间。我认为您无法读取存储日期的格式。您可以按照自己喜欢的方式读取它,例如 dd/mm/yyyy 或 yyyy/mm/dd 等。

您可以做的是在数据库之外检查任何日期字段的此值。您可以为此使用正则表达式。但这将在数据库之外。

于 2012-09-04T15:23:56.303 回答