使用DateDiff作为Excel Networkdays

时间:2015-01-05 08:54:46

标签: sql datediff

祝大家新年快乐。

因此,我试图找出今天的日期(GETDATE())与特定表格(targetdate)中的目标日期之间的差异

当我使用DATEDIFF功能时,它在计算中包括非工作日(周末和银行假日)。虽然我们从第三方供应商处提供给我们的日期calandar表会告诉您周末,但它并没有告诉您银行假期。

幸运的是,数据库中有另一个名为 - ih_non_work_days的表。

日期的格式为"2014-12-25 00:00:00.000",例如在该表格中。

如何在差异天数内使用我的"targetdate" and today's date计算 - 排除ih_non_work_days数据库中存在的日期?

所以现在我的基本脚本看起来像 -

SELECT   com.comm_reference AS 'Referance'
     ,com.current_task_target_date AS 'TargetDate'
             , DATEDIFF(D,com.current_task_target_date,GETDATE()) AS 'Incorrect Date Calculation'
FROM [dbo].[em_communication] as com

1 个答案:

答案 0 :(得分:0)

SELECT C.comm_reference AS Referance ,C.current_task_target_date AS TargetDate ,DATEDIFF(d, C.current_task_target_date,CURRENT_TIMESTAMP) - NoWorkDays AS 'Days Past Target Date' FROM [dbo].[em_communication] C CROSS APPLY ( SELECT COUNT(*) AS NoWorkDays FROM [dbo].[ih_non_work_days] D WHERE D.date_off BETWEEN C.current_task_target_date AND CURRENT_TIMESTAMP ) N;