2015-01-05 30 views
0

所有的新年快乐。使用DateDiff作为Excel网络日工作

所以我试图找出今天的日期(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 

回答

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;