首页 > 解决方案 > 将 SQL Server 中的日期与可能的空值进行比较的优雅方法

问题描述

有没有更优雅的方法来解决在日期可能为空的 sql server 中比较日期的问题?我不在乎时间。

DECLARE @validFrom DATE
DECLARE @validTo DATE
SET @validFrom = GETDATE()
SET @validTo = NULL
IF ((@validFrom is null AND @validTo IS NOT NULL) OR (@validTo is null AND @validFrom IS NOT NULL) OR DATEDIFF(day, @validFrom, @validTo) <> 0)
    PRINT 'not same'
ELSE
    PRINT 'same'

标签: sql-server

解决方案


您不需要使用DATEDIFF(DAY, ...),您可以直接比较日期,因为您已经声明了DATE数据类型。

IF  @validFrom = @validTo
OR  (    -- when both are `NULL` consider same
        @validFrom  IS NULL 
    AND @validTo    IS NULL
    )
    PRINT 'same'
ELSE
    PRINT 'not same'

推荐阅读