函数返回最后2个数字大于INT数据类型的某个值的值

时间:2015-03-23 19:27:19

标签: sql sql-server-2008 sql-function

是否有任何SQL函数可用于返回最后2个数字大于31的所有记录。 基本上,有一列:INT数据类型中的OpenDate存储为'19810281',后两个值为81(应该是日期),因此它有错误的数据。

我想查询所有那些最后2列数的坏记录:OpenDate大于31? 任何建议都将不胜感激。

1 个答案:

答案 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