我在其中一个列中的值很少,如下所示:
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结果,它正在使用上面的查询,但是当我从表中列出相同的时候,它给出了有效的结果。
答案 0 :(得分:2)
根据MSDN;
ISDATE的返回值取决于SET设置的设置 DATEFORMAT,SET LANGUAGE和默认语言选项。
如果我们明确地将DateFormat设置为mdy,那么它将以这种格式验证所有日期的真实性;
SET DATEFORMAT mdy;
所以在你的情况下,我猜你应该精确你要比较日期的日期格式。我刚刚测试了您在上面发布的查询并且“无效”#39;结果,按要求。