如何将 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,那么它只会在报告中说待定****。

如果一行为 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

最新更新