Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 ISDATE未验证正确的日期_Sql Server 2008 - Fatal编程技术网

Sql server 2008 ISDATE未验证正确的日期

Sql server 2008 ISDATE未验证正确的日期,sql-server-2008,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 你能纠正我吗 当我对表中的一列应用相同的条件时,它不起作

我在下面的一列中有几个值:

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,我希望得到一个invlid结果,它正在处理上述查询,但当我把它放在表中的列上时,它给出了有效的结果。

根据

ISDATE的返回值取决于set设置 日期格式、设置语言和默认语言选项

如果我们显式地将DateFormat设置为mdy,那么它将验证此格式中的所有日期为true

SET DATEFORMAT mdy;

因此,在你的情况下,我想你应该精确的日期格式,你想比较你的日期。我刚刚测试了您在上面发布的查询,并根据要求得到了“无效”的结果。

@jpw他们这样做了吗?你如何解释第一个->
00030503
?@Nadeem_MK My bad,忘记了日期时间范围从1753-01-01开始,而不是从0001-01-01开始。我会将00030503解释为第3年5月3日,但我知道MSSQL不会。我只是复制并粘贴了您发布的查询,结果得到
无效
当我对表中的列应用相同条件时,它不起作用。这是给我的有效日期。例如,我有一个日期为080203,我期待invlid结果,它正在处理上面的查询,但当我把它放在表中的列上时,它给出了有效的结果。+1。更好的是:将来,我们不要将潜在的日期信息存储在varchar列mkay中?