System.TimeSpan
tsDiffer=dt2.Date-dt1.Date;//总括dt2和dt1之间相差多少天
int intDiffer=tsDiffer.Days;//相差天数的int值
for(int
i=0;i<intDiffer;i++)//从dt1开端一每一天加,判断有时的日期值是还是不是周日或星期日,即便既不是礼拜天,亦不是周六,何况也不在dt3和dt4之间,则该天为职业日,intReturn加1
{
    DateTime dtTemp=dt1.Date.AddDays(i);
    if((dtTemp.DayOfWeek!=System.DayOfWeek.Sunday) &&
(dtTemp.DayOfWeek!=System.DayOfWeek.Saturday))
    {
        if((dtTemp.Date<dt3.Date) || (dtTemp.Date>dt4.Date))
        {
            intReturn++;
        }
    }
   
}
return intReturn;

  

SELECT   DATEADD(DAY,-1, DATEADD(MONTH,1, CONVERT(VARCHAR(7),GETDATE(),120)+'-01'))

转自:http://www.maomao365.com/?p=6771

/**//**//**//// <summary>
///
总计多少个日子之间的做事日数,(星期6,星期六,不算职业日)dt1和dt2之间相隔多少工作日,在那之中dt3-dt4的年One plus公休日,这里公共休假期能够用于个数组,大概从叁个xml表里面读取,以便扣除
/// </summary>
/// <param name=”dt1″>要总结的苗虎时间</param>
/// <param name=”dt2″>要计算的扫尾时间</param>
/// <param name=”dt3″>公休初叶时间</param>
/// <param name=”dt4″>公休结束时间</param>
/// <returns>intReturn</returns>
private int DifferDate(DateTime dt1,DateTime dt2,DateTime dt3,DateTime
dt4)
{
int intReturn=0;//再次来到值,即dt2和dt1之间的干活日数

 

1、查询钦赐时期间隔的工作日

图片 1

}

本条主要困难是官方节日,国家的合法节日每年都不雷同,还波及到调休,所以大家规划多个假期表。首要字段有年度,类型(是或不是调休),假日日期。如下:

  图片 2

--例: 获取 2018-4-10 为2018年4月的第几个工作日
declare @d datetime
set @d ='2018-4-10' --可通过下面的方法计算出 为本月第6个工作日

---1:获取4月指定日期的所在月工作日数
create table A(A datetime)
create table B(B datetime)
----4.5.4.6 4.7 4.30为法定假日
insert into A (A)values('2018-4-5'),
('2018-4-6'),('2018-4-7'),('2018-4-30')
----补班日 4月8 4月28 4月30 日
insert into B (B)values('2018-4-8'),
('2018-4-28'),('2018-4-30')

---生成指定月份(4月)所有天数流水
set datefirst 1 --设置星期一为第一个工作日

select * from 
(

select row_number() over(order by d asc ) as [本月第*个工作日],d,datepart(w,d) as [weekInfo] from (
select dateadd(day,number,'2018-4-1') as d from master..spt_values 
where type='p' 
and number >=0 
and dateadd(day,number,'2018-4-1') between '2018-4-1' and dateadd(day,-1,'2018-5-1')
) as a 
where a.d not in (select A from A)
and (a.d in (select b from B ) 
or datepart(w,a.d) not in (6,7) 
)
) as extend 
where d =@d 

go
drop table A 
drop table B

以此也轻松回顾:就是月第一天加7月再减去一天

  

下文叙述工作中,须要获得钦定日期在前段时期的工作日

 

以此关键难点是合法节日,国家的合法节日每年都不一致,还涉嫌到调休,所以大家规划叁个假期表。首要字段有年度,类型(是或不是调休),假期日期。如下:

摘要:

简单:

 

下文陈述常规的内定职业日所在月的天命深入分析,
兑现思路:
1 生成二个国家法定假日表(A),非星期天,星期日
2 生成叁个国家法定补办表(B),涉及周天周天调班
3 生成内定月份的日子流水表(C)
4 获取钦命日期的专门的学业日信息,如下所示:

 CREATE TABLE [dbo].[Holidays](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Holiday] [datetime2](7) NULL,--假期日期

[YearS] [char](4) NULL,--年份
[daytype] [int] NULL--类型

)

写个情势总计出除开法定假期的职业日