如何获取有效日期,例如使用ISDATE函数而不删除Null值?

时间:2012-05-11 20:28:25

标签: sql sql-server-2008 tsql

大家好日子!

我正在使用带有日期列的T-SQL ISDATE()函数作为参数来过滤掉错误的日期;问题是ISDATE函数在遇到NULL值时将返回零。

以下示例为例;如果日期为空,表中的有效数据将被排除在结果集之外。我如何解决这个问题,以便我可以获得有效日期,但也可以检索没有日期的记录?我也需要没有日期的记录,我只需要删除日期不好的例子,例如,不完整的日期或缺少字符的日期。

示例:

SELECT * FROM EXAMPLE WHERE ISDATE(MAYDATE) <> 0

感谢我的朋友们!

4 个答案:

答案 0 :(得分:2)

您可以使用ISNULL函数将NULL值替换为ISDATE函数刚刚使用的有效日期值。以下是两个例子:

SELECT * FROM EXAMPLE WHERE ISDATE(ISNULL(MAYDATE, '1/1/1900')) <> 0
SELECT * FROM EXAMPLE WHERE ISDATE(ISNULL(MAYDATE, GETDATE())) <> 0

或者只是检查该值是否为NULL

SELECT * FROM EXAMPLE WHERE (ISDATE(MAYDATE) <> 0) OR (MAYDATE IS NULL)

答案 1 :(得分:1)

尝试:

SELECT * FROM EXAMPLE WHERE ISDATE(MAYDATE) <> 0 OR MAYDATE IS NULL

答案 2 :(得分:1)

首先检查空值

SELECT * FROM EXAMPLE WHERE MAYDATE is null or ISDATE(MAYDATE) <> 0

答案 3 :(得分:0)

SELECT * FROM EXAMPLE WHERE (MAYDATE IS NOT NULL AND ISDATE(MAYDATE) <> 0)
     OR (MYDATE IS NULL)