大家好日子!
我正在使用带有日期列的T-SQL ISDATE()
函数作为参数来过滤掉错误的日期;问题是ISDATE
函数在遇到NULL
值时将返回零。
以下示例为例;如果日期为空,表中的有效数据将被排除在结果集之外。我如何解决这个问题,以便我可以获得有效日期,但也可以检索没有日期的记录?我也需要没有日期的记录,我只需要删除日期不好的例子,例如,不完整的日期或缺少字符的日期。
示例:
SELECT * FROM EXAMPLE WHERE ISDATE(MAYDATE) <> 0
感谢我的朋友们!
答案 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)