Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 营业日计算_Sql Server 2005 - Fatal编程技术网

Sql server 2005 营业日计算

Sql server 2005 营业日计算,sql-server-2005,Sql Server 2005,我有一个查询,通过下面的SQL查询计算两天之间的总天数,包括开始日期和结束日期。如果结束日期不为空,则结束日期被视为当前日期 这个查询完成了任务。但我不想数星期六和星期天。可能的英国公共假日。如果我能理解周六和周日的逻辑,我可以做这个 SELECT DateDiff(day,DateADD(day,-1,StartDate),ISNULL(EndDate,getDate()))numberOfDays FROM <mytable> 我如何只计算两个日期之间的工作日

我有一个查询,通过下面的SQL查询计算两天之间的总天数,包括开始日期和结束日期。如果结束日期不为空,则结束日期被视为当前日期

这个查询完成了任务。但我不想数星期六和星期天。可能的英国公共假日。如果我能理解周六和周日的逻辑,我可以做这个

SELECT  DateDiff(day,DateADD(day,-1,StartDate),ISNULL(EndDate,getDate()))numberOfDays
        FROM <mytable>
我如何只计算两个日期之间的工作日


谢谢你

我强烈推荐一个日历表,特别是如果你需要考虑特定的假期。例如,动态计算复活节将是一件非常痛苦的事情


如果要单独使用T-SQL,请小心使用依赖于区域/语言设置的函数来输出DATENAME

我强烈推荐一个日历表,特别是如果你需要考虑特定的假期。例如,动态计算复活节将是一件非常痛苦的事情

如果要单独使用T-SQL,请小心使用依赖于区域/语言设置的函数来输出DATENAME

看一看。 在页面底部,有一些用户生成的内容。 一位用户在那里发布了一个功能,它完全满足您的需求,包括假期标题:UDF,用于返回工作日数,包括银行假期表中的支票。

请查看。 在页面底部,有一些用户生成的内容。 一位用户在那里发布了一个函数,它可以完全满足您的需要,其中包括节假日标题:UDF,用于返回工作日数,包括银行假日表中的支票。

试试这个

SELECT  DateDiff(day,DateADD(day,-1,StartDate),ISNULL(EndDate,getDate())) - 
( CASE WHEN DATENAME(dw, StartDate) = 'Sunday' OR 
DATENAME(dw,ISNULL(EndDate,getDate())) = 'Sunday' THEN 1 ELSE 0 END)
- ( CASE WHEN DATENAME(dw, StartDate) = 'Saturday' OR 
     DATENAME(dw,ISNULL(EndDate,getDate())) = 'Saturday' THEN 1 ELSE 0 END)
numberOfDays         
FROM <mytable> 
试试这个

SELECT  DateDiff(day,DateADD(day,-1,StartDate),ISNULL(EndDate,getDate())) - 
( CASE WHEN DATENAME(dw, StartDate) = 'Sunday' OR 
DATENAME(dw,ISNULL(EndDate,getDate())) = 'Sunday' THEN 1 ELSE 0 END)
- ( CASE WHEN DATENAME(dw, StartDate) = 'Saturday' OR 
     DATENAME(dw,ISNULL(EndDate,getDate())) = 'Saturday' THEN 1 ELSE 0 END)
numberOfDays         
FROM <mytable> 

可能重复的可能重复的如何处理假日?如何处理假日?