SQL-DATEDIFF以计算天数

问题描述 投票:-1回答:1

需要一些帮助。我有这样的语法,我认为这是错误的-需要小幅修复

DATEDIFF(DAY, GETDATE(), DATEADD(DAY, 3, ESI.EventStatusDate)) AS BackloggedDays 

我实际上想说的是事件状态日期是什么(作为宽限期增加3天),将其与当前日期(获取日期)进行比较,并告诉我它的滞后天数(积压)。如果没有后备日志,请将其设置为0天

sql datediff
1个回答
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;
© www.soinside.com 2019 - 2024. All rights reserved.