【发布时间】:2013-11-05 19:02:04
【问题描述】:
我有一个表,需要验证某个列是否只包含日期。我正在尝试计算不遵循日期格式的记录数。如果我检查一个未定义为“日期”类型的字段,则查询有效。但是,当我检查我定义为日期的字段时,它没有。
查询:
SELECT
count(case when ISDATE(Date_Field) = 0 then 1 end) as 'Date_Error'
FROM [table]
列定义:
Date_Field(date, null)
样本数据:'2010-06-27'
错误信息:
参数数据类型日期对于 isdate 函数的参数 1 无效。
关于为什么此查询不适用于我定义为日期的字段的任何见解?
谢谢!
【问题讨论】:
-
如果您使用日期类型定义列,则它是日期。时期。无需进一步检查。
-
isDate 函数需要一个文本字段作为输入,而不是日期字段。正如 Joel C 所说,如果该字段被定义为日期字段,那么该字段中的值必须是日期。
-
另外:首先将日期值存储在字符串列中是不好的。需要将 ISDATE() 用于修复旧模式设计之外的任何事情都是代码异味。
标签: sql sql-server