我需要根据天气或运行报告时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,那么它只会在报告中说待定****。
如果一行为 null,则它仍然只是 Null,而对于报告没有 ****。
NULL
和=
比较,你必须使用IS NULL
。
您不需要将 DATEDIFF()
的结果转换为整数,因为它是整数,60
也是如此。
最后一个条件:> 60
面包车只是用CASE
语句中的ELSE
部分进行检查。
试试这个:
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