sql - 如何将 DATEDIFF 与驻留在报表查看器中的案例陈述中的设定天数进行比较
问题描述
我需要根据天气获取报告集中的列的特定输出,或者在运行报告时 Uf_RequestedShipDate 是 60 或更多过期日期。
到目前为止,我已经尝试过 Cast 和 Convert,我之前只是尝试将 DATEDIFF 输出与 60 进行比较,但我一直收到同样的错误。
, CASE
WHEN co.Uf_RequestedShipDate = NULL THEN NULL
WHEN CONVERT(INT, DATEDIFF(day, co.Uf_RequestedShipDate, GETDATE())) <= CAST(60 AS INT) /*DATEADD(DAY, -60, @Today)*/ THEN co.Uf_RequestedShipDate + '****'
WHEN CONVERT(INT, DATEDIFF(day, co.Uf_RequestedShipDate, GETDATE())) > CAST(60 AS INT) /*DATEADD(DAY, -60, @Today)*/ THEN 'Pending ****'
END AS 'RequestedShipDate'
如果数据库中有值,我只需要它输出带有 **** 的日期或使用 **** 挂起的日期,如果超过该日期超过 60 天,它将处于挂起状态,如果没有,那么它仍应显示日期。
示例:我在该列中有一个日期为 2019-03-30 的条目,它会将 2019-03-30 **** 发送到报告。
如果有一个有 2018-10-31,那么它只会在报告上显示 Pending ****。
如果它连续为空,那么它仍然只是空,并且报告没有 ****。
解决方案
你不能与 比较NULL
,=
你必须使用IS NULL
。
您不需要将结果转换DATEDIFF()
为整数,因为它是整数,所以60
.
最后一个条件:> 60
van 只检查语句ELSE
中的一部分。
试试这个:CASE
CASE
WHEN co.Uf_RequestedShipDate IS NULL THEN NULL
WHEN DATEDIFF(day, co.Uf_RequestedShipDate, GETDATE()) <= 60
THEN CONVERT(VARCHAR, co.Uf_RequestedShipDate, 120) + '****'
ELSE 'Pending ****'
END AS RequestedShipDate
推荐阅读
- django - 从模板将参数传递给视图函数而不在 URL 中公开它
- oracle - 如何为 PL SQL 中的现有表创建唯一 ID?
- python - 二进制中的负数(一个补码和二进制补码)
- r - 针织,在带有时间戳列的帧上使用 group_by()
- openshift - 如何将从 dockerhub/dockerio 导入的新 ImagestreamTag 添加到现有的 Imagestream?
- django - Django:将多个外键存储在模型的同一属性中
- javascript - 隐藏 ngx-datatable Ionic 中的列
- c - 如何让 microsoft c 编译器预先计算常量的标准数学函数
- apache-spark - 数据如何从 S3 存储桶传输到 Spark 工作人员
- vue.js - 如何根据给定值在组件中显示不同的下拉选项