如何在DATEDIFF比较中处理NULL?

use*_*330 5 sql t-sql datediff

我必须比较两个单独的列,以便得出它们之间的最新日期.我使用DATEDIFF(分钟,日期1,日期2)来比较它们,但是,在某些记录中,日期为空,返回空结果并混淆CASE.

有没有办法解决这个问题,或者预先确定哪个日期为空?

(psudocode)

UPDATE TABLE
SET NAME = p.name,
    NEW_DATE = CASE WHEN DATEDIFF(minute,d.date1,d.date2) <= 0 THEN d.date
                    ELSE d.date2
               END
FROM TABLE2 d
INNER JOIN TABLE3 p
  ON d.ACCTNUM = p.ACCTNUM
Run Code Online (Sandbox Code Playgroud)

And*_*nov 3

您可以在 CASE 中添加额外的逻辑:

UPDATE TABLE 
SET NAME = p.name, 
    NEW_DATE = CASE 
                    WHEN d.date1 IS NULL THEN -- somewhat 
                    WHEN d.date2 IS NULL THEN -- somewhat 
                    WHEN DATEDIFF(minute,d.date1,d.date2) <= 0 THEN d.date 
                    ELSE d.date2 
               END 
FROM TABLE2 d 
INNER JOIN TABLE3 p 
  ON d.ACCTNUM = p.ACCTNUM 
Run Code Online (Sandbox Code Playgroud)