Sql server 获取两天之间的天数总和(不包括星期日)
我有一个用于存储员工休假信息的表,其中包含以下字段:LeaveID、EmployeeID、NoOfDays、StartDate、EndDate和Status。我使用下面的查询来计算两个日期之间的总天数 问题是,如果在两个日期之间有一个星期天,那么这一天也是一天,我不打算这样。同样,如果一名员工在1月29日和2月2日之间申请休假,即5天,我分别选择1月1日至31日作为我的@startdate和@enddate,那么我得到的是零,而不是3天(29,30,31) 我需要你们的帮助,伙计们,我还是SQL server的新手Sql server 获取两天之间的天数总和(不包括星期日),sql-server,Sql Server,我有一个用于存储员工休假信息的表,其中包含以下字段:LeaveID、EmployeeID、NoOfDays、StartDate、EndDate和Status。我使用下面的查询来计算两个日期之间的总天数 问题是,如果在两个日期之间有一个星期天,那么这一天也是一天,我不打算这样。同样,如果一名员工在1月29日和2月2日之间申请休假,即5天,我分别选择1月1日至31日作为我的@startdate和@enddate,那么我得到的是零,而不是3天(29,30,31) 我需要你们的帮助,伙计们,我还是SQL
SELECT COALESCE(SUM(NoOfDays), 0) AS SumOfDays
FROM LeaveApplications
WHERE StartDate>=@startdate
AND EndDate <=@enddate
选择合并(SUM(NoOfDays),0)作为SumOfDays
离开申请
其中StartDate>=@StartDate
和EndDate您可以使用存储过程获取两天之间的天数,不包括星期天!这个想法很简单,你必须遍历每一天,如果不是星期天,则增加计数:
注意:不确定是否有任何预定义的函数
Create Procedure GetDays(@Date1 Date, @Date2 Date)
AS
Begin
Declare @Length As Int = 0
-- get total number days to iterate
Set @Length = DateDiff(Day, @Date1, @Date2)
Declare @i As Int = 1
Declare @CountDays AS Int = 0
While (@i <= @Length)
Begin
-- get each day name
Declare @Name As VarChar(15) = Format(@Date1, 'dddd')
If(@Name != 'SUNDAY') -- increment count if it is not sunday
Set @CountDays = @CountDays+1
-- increment day
Set @Date1 = DateAdd(Day, 1, @Date1)
Set @i = @i +1
End
Select @CountDays 'Total Days Excluding Sunday'
End
-- execute procedure
Exec dbo.GetDays '2019-02-01', '2019-02-5'
创建过程GetDays(@Date1日期,@Date2日期)
作为
开始
将@Length声明为Int=0
--获取要迭代的总天数
设置@Length=DateDiff(天、@Date1、@Date2)
将@i声明为Int=1
将@CountDays声明为Int=0
而(@i