sql-server - 将 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'
解决方案
您不需要使用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'
推荐阅读
- java - @Transactional 方法在异常和多线程 wildlfy CDI 上插入值
- php - 从 php 控制器将 html 文件呈现为 html
- c++ - C++ 使用旧编译器 GCC 4.4.0 在结构列表中查找字符串
- java - 如何在 iText 7 中标记标题
- javascript - 在 JavaScript 中解析嵌套的 XML 矩阵
- java - FileWriter不知何故用中文写
- c# - 如何替换以下特殊字符是C#中的字符串�
- javascript - Vue 未定义
- python - 当列名不同且序列未知时比较数据帧的策略
- ajax - AJAX 加载内容和传递变量 (POST)