sql-server - 如果计算值在某个范围内,则返回 NULL
问题描述
我正在对日期字段执行相当简单的计算,并且我想在日期早于预定义日期的情况下返回 NULL 值。从本质上讲,我正在寻找NULLIF
使用除相等以外的运算符执行的最有效方法。
下面是我想做的一个例子(显然语法失败):
SELECT
Id,
NULLIF(DATEADD(DAY, -180, SurveyDate),
{LESS THAN} '20190101')
FROM dbo.Vendor
我使用以下查询获得了所需的结果,但它似乎有点笨拙和冗长:
SELECT
Id,
CASE WHEN DATEADD(DAY, -180, SurveyDate) < '20190101'
THEN NULL
ELSE
DATEADD(DAY, -180, SurveyDate)
END
FROM dbo.Vendor
解决方案
您可以做的简化是删除语句的ELSE
一部分:CASE
CASE WHEN DATEADD(DAY, -180, SurveyDate) >= '20190101' THEN DATEADD(DAY, -180, SurveyDate) END
我看不出如何在DATEADD()
不对代码引入更多复杂性的情况下只调用 1 次函数。
推荐阅读
- git - Git pull 不更新远程的最后一次提交
- ghostscript - 如何防止 GhostScript 裁剪 pdf 文件?
- arrays - ReactJS:带有条件表达式的嵌套 .map 以匹配值
- python - matplotlib中条形图中的断轴斜线标记?
- css - CSS not:last-child 或 last-child 未按预期选择
- php - Laravel 无法访问除根以外的其他路由(使用 XAMPP)
- javascript - v-html 中的 Vue.js v-model
- amazon-web-services - OpsWorks 部署失败且没有日志?
- python - 如果我通过变量传递有效负载,Python requests.post 不起作用
- sql - SQL 从购买中插入库存