是否有任何SQL函数可用于返回最后2个数字大于31的所有记录。 基本上,有一列:INT数据类型中的OpenDate存储为'19810281',后两个值为81(应该是日期),因此它有错误的数据。
我想查询所有那些最后2列数的坏记录:OpenDate大于31? 任何建议都将不胜感激。
答案 0 :(得分:5)
您可以使用Modulo功能。
SELECT OpenDate
FROM Table
WHERE OpenDate % 100 > 31
在2008年,您可以使用DATE数据类型。这比int小一个字节,可以防止出现此类问题。
或者更强大的检查是将值转换为char并使用isdate
,因为yyyymmdd
是明确的。
SELECT OpenDate
FROM TABLE
WHERE LEN(OpenDate) <> 8
OR ISDATE(CAST(OpenDate AS CHAR(8))) = 0