如果我有一个比较SQL Server中两个日期的查询,如果其中一个日期为空,会发生什么?

use*_*525 2 sql sql-server

如果我的查询具有WHERE子句,如:

where date1 > date2
Run Code Online (Sandbox Code Playgroud)

如果date2为null,会发生什么?我是否需要指定date1和date2都不为空?

类型是DATE()

Ker*_*mit 6

它将尝试与之比较date1,NULL并将评估为未知.

WHERE '2013-07-18' > NULL
Run Code Online (Sandbox Code Playgroud)

未知的.请参阅我在博客文章中关于NULL3值逻辑中的行为.

您将需要使用类似于ISNULL周围的函数date2或明确地写出逻辑.但是,使用ISNULL将阻止使用索引.你可以写:

WHERE (date1 > date2 OR date2 IS NULL)
Run Code Online (Sandbox Code Playgroud)