Gee*_*eva 2 sql sql-function sql-server-2008
是否有任何SQL函数可用于返回所有那些最后2个数字大于31的记录.基本上,有一列:INT数据类型中的OpenDate存储为'19810281',后两个值为81(应该是一个日期)所以它有错误的数据.
我想查询所有那些最后2列数的坏记录:OpenDate大于31?任何建议将不胜感激.
您可以使用Modulo功能.
SELECT OpenDate
FROM Table
WHERE OpenDate % 100 > 31
Run Code Online (Sandbox Code Playgroud)
与2008年一样,您可以使用DATE数据类型.这比int小一个字节,可以防止这种类型的问题.
或者,更可靠的检查是将值转换为char并使用,isdate因为它yyyymmdd是明确的.
SELECT OpenDate
FROM TABLE
WHERE LEN(OpenDate) <> 8
OR ISDATE(CAST(OpenDate AS CHAR(8))) = 0
Run Code Online (Sandbox Code Playgroud)