ISDATE未验证正确的日期

时间:2014-09-23 15:54:00

标签: sql-server-2008

我在其中一个列中的值很少,如下所示:

C_Date - Varchar(10)
00030503
10030503

当我在此列上使用ISDATE函数时,它将作为有效日期(即1)重新调整。 如何确保ISDATE返回0.?

Declare @c_date varchar(10)
Set @c_date =00030503
select case when ISDATE(@c_date)=0 then 'invalid' else 'valid' end
你能纠正我吗?

当我对表中的列应用相同的条件时,它不起作用。它给了我有效的日期。 对于前。我有一个080203的日期,我期待enlid结果,它正在使用上面的查询,但是当我从表中列出相同的时候,它给出了有效的结果。

1 个答案:

答案 0 :(得分:2)

根据MSDN;

  

ISDATE的返回值取决于SET设置的设置   DATEFORMAT,SET LANGUAGE和默认语言选项。

如果我们明确地将DateFormat设置为mdy,那么它将以这种格式验证所有日期的真实性;

SET DATEFORMAT mdy;

所以在你的情况下,我猜你应该精确你要比较日期的日期格式。我刚刚测试了您在上面发布的查询并且“无效”#39;结果,按要求。