需要一些帮助。我有这样的语法,我认为这是错误的-需要小幅修复
DATEDIFF(DAY, GETDATE(), DATEADD(DAY, 3, ESI.EventStatusDate)) AS BackloggedDays
我实际上想说的是事件状态日期是什么(作为宽限期增加3天),将其与当前日期(获取日期)进行比较,并告诉我它的滞后天数(积压)。如果没有后备日志,请将其设置为0天
我认为您想要这样的东西...
DECLARE @EventStatusDate DATE;
SET @EventStatusDate = '02/17/2020';
SELECT
IIF(DATEDIFF(DAY, GETDATE(), DATEADD(DAY, 3, @EventStatusDate)) > 0
, 0
, DATEDIFF(DAY, GETDATE(), DATEADD(DAY, 3, @EventStatusDate))) AS BackloggedDaysWithGrace;
IIF函数将值设置为0,如果日期差大于0。我认为IIF是在SQL Server 2016中引入的。因此,如果您使用的版本早于该版本,则需要使用CASE语句而不是IIF函数。
SELECT CASE
WHEN DATEDIFF(DAY, GETDATE(), DATEADD(DAY, 3, @EventStatusDate)) > 0 THEN
0
ELSE
DATEDIFF(DAY, GETDATE(), DATEADD(DAY, 3, @EventStatusDate))
END AS BackloggedDaysWithGrace;