我有两个日期:aStartDate和 aCreatedDate
如果我说
CreatedDate < StartDate 
StartDate如果是会发生什么NULL?
我应该使用
isnull(startdate,0) 
或者它会只返回 a还是NULL总是小于StartDate原样?StartDateNULL
如果两者都是StartDate和CreatedDatecan NULL,您可以使用 SQLCOALESCE函数提供默认值,例如一个足够小的日期和一个足够大的日期:
SELECT ...
FROM ...
WHERE COALESCE(StartDate, DATE '0001-01-01') < COALESCE(CreatedDate, DATE '9999-12-31')
在这里,我使用标准 SQL 日期和时间文字。
注意:日期和时间限制因不同的数据库服务器而异。上面的示例适用于 Oracle 数据库
任何普通比较(>、<、>=、<=、=、<>、like、in)如果至少有一个参数为 null,则返回 null;因此,如果 StartDate 为 null,则 CreatedDate < StartDate 返回 null。您可以显式测试 null :
  ((CreatedDate < StartDate) or (StartDate is null))
或者您可以转换 StartDate 值
  (CreatedDate < NVL(StartDate, To_Date('1.1.1000', 'DD.MM.YYYY')) -- <- Oracle Syntax
您必须检查null.
如果您不检查,null那么您的比较将导致unknownwhich is false。