金沙贵宾会官网|金沙贵宾会登录-官网

【A】金沙贵宾会官网超高的返奖率为娱乐者提供资金保障,所以金沙贵宾会登录官网更加的方便了你的娱乐,申请88元彩金,因为在当中不仅仅只有游戏。

获取指定日期为本月第几个工作日,计算两个日

日期:2019-10-05编辑作者:网络数据

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

/**//**//**//// <summary>
/// 总结五个日子之间的劳作日数,(星期6,周六,不算专门的学业日)dt1和dt2之间相隔有一点点工作日,当中dt3-dt4的时光为公共休沐日,这里公共休假期能够用来个数组,恐怕从一个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、查询指按期间距离的工作日

金沙贵宾会官网, 摘要:

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;

这么些主要难点是法定节日,国家的法定节日年年都不平等,还涉嫌到调休,所以大家设计三个假期表。主要字段有年度,类型(是不是调休),假日日期。如下:

下文陈说专门的学问中,须求获得钦定日期在本月的专门的学问日

}

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

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

)

  

下文呈报常规的内定专门的工作日所在月的小运深入分析,
落到实处思路:
1 生成三个国家法定假期表(A),非周末,周天
2 生成二个国度法定补办表(B),涉及周日周日调班
3 生成钦定月份的日子流水表(C)
4 获取内定日期的工作日消息,如下所示:

加多好当年的假期和调休日期

--例: 获取 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

写个点子总括出除开法定假期的职业日

金沙贵宾会官网 1

ALTER FUNCTION [dbo].[GetWorkerDays]

(

-- Add the parameters for the function here

 @StartTime DATETIME, -- 起始时间

 @EndTime DATETIME -- 结束时间,查询默认小于此时间

)

RETURNS INT

AS

BEGIN 

DECLARE @Total INT;

DECLARE @Temp INT;

DECLARE @Days INT;

DECLARE @Index INT;

SET @Days = DATEDIFF(DAY,@StartTime,@EndTime);

SET @Index = 0;

SET @Temp = 0;

SET @Total = 0;

WHILE @Index < @Days BEGIN 

SET @Temp = DatePart(WEEKDAY,DATEADD(DAY,@Index,@StartTime));

IF @Temp > 1 AND @Temp < 7 BEGIN 

SET @Total = @Total + 1;

END 

SET @Index = @Index + 1;

END 

RETURN ISNULL(@Total,0)

END

  

施行这些表值函数后增加调休日和减去法定休假正是职业日了,大家能够再写八个积攒进度。

 

2,总结内定日期段的苏息日

以此跟那么些相反,正是周天增加法定休假在回退调休日

咱俩写叁个函数

ALTER FUNCTION GetRestDays

(

@StartTime DATETIME2,

@EndTime DATETIME2

)

RETURNS INT

AS

BEGIN

DECLARE @LegalRest INT --法定假期

DECLARE @AdjustmentDay INT--调休上班时间

DECLARE @SurplusDay INT --剩余工作日

DECLARE @CountDay INT --总共天数



SELECT @LegalRest=COUNT(0) FROM dbo.Holidays WHERE daytype=1 AND  YearS=YEAR(GETDATE()) AND MONTH(Holiday)=MONTH(GETDATE()) 

AND Holiday>=@StartTime AND Holiday<=@EndTime



SELECT  @AdjustmentDay=COUNT(0) FROM dbo.Holidays WHERE daytype=2 AND  YearS=YEAR(GETDATE()) AND MONTH(Holiday)=MONTH(GETDATE()) 

AND Holiday>=@StartTime AND Holiday<=@EndTime

 SET @SurplusDay= [dbo].[GetWorkerDays](@StartTime,DATEADD(DAY,1,@EndTime))--剩余工作日

 SELECT @CountDay=COUNT(0) FROM dbo.TimeSpanDays(@StartTime ,DATEADD(DAY,1,@EndTime))  --总共天数  计算出 时间段总共天数

 return @CountDay-@SurplusDay+@LegalRest-@AdjustmentDay

END

  

 

3、总计当前前月中日期和月末日期

月初

简单:

SELECT  CONVERT(VARCHAR(7),GETDATE(),120)+'-01'

  

月末日期

以此也简要归纳:便是月第一天加四月再减去一天

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

  金沙贵宾会官网 2

 

本文由金沙贵宾会官网发布于网络数据,转载请注明出处:获取指定日期为本月第几个工作日,计算两个日

关键词:

CPU开销分析,资源等待之

一. 概述 上次在介绍品质调优中讲到了I/O的支出查看及护卫,本次介绍CPU的付出及护卫,在调优方面是足以从三维去...

详细>>

2008从入门到精通,在SQLServer中的使用

XML查询技术 XML文档以一个纯文本的形式存在,主要用于数据存储。不但方便用户读取和使用,而且使修改和维护变得...

详细>>

查看电脑或者服务器sqlserver端口命令

  exec sys.sp_readerrorlog 0, 1, 'listening'...

详细>>

O硬盘交互,性能调优

一.概念 在介绍资源等待PAGEIOLATCH之前,先来了解下从实例级别来分析的各种资源等待的dmv视图sys.dm_os_wait_stats。它是...

详细>>