如何从一系列日期算起周末天数 [英] How do I get count of weekend days from a range of dates
本文介绍了如何从一系列日期算起周末天数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
示例#1:
StartDate = Getdate ),EndDate = GetDate()+ 5 - 结果应为2.
示例#2: / p>
StartDate = Getdate(),EndDate = GetDate()+ 10 - 结果应为4.
任何人都可以建议。
解决方案
p>这里是
DECLARE @STARTDATE DATE = '01 / JAN / 2014'
DECLARE @ENDDATE DATE = '01 / MAR / 2014'
; WITH CTE as
(
SELECT CAST(@STARTDATE AS DATE)as as DAYS)
UNION ALL
SELECT DATEADD(DAY,1,[DAYS])[DAYS]
FROM CTE
WHERE [DAYS]< CAST(@ENDDATE AS DATE)
)
SELECT DISTINCT COUNT [DAYS])OVER(DATENAME(WEEKDAY,[DAYS]))CNT,
DATENAME(WEEKDAY,[DAYS])WD
FROM CTE
WHERE DATENAME(WEEKDAY,[DAYS] )='SATURDAY'或DATENAME(WEEKDAY,[DAYS])='SUNDAY'
ORD ER BY DATENAME(WEEKDAY,[DAYS])
这是您的结果
I have to find out total number of saturday and sunday between Start Date & End Date.
Example #1:
StartDate = Getdate(), EndDate = GetDate() + 5 -- result should be 2.
Example #2:
StartDate = Getdate(), EndDate = GetDate() + 10 -- result should be 4.
Can anyone suggest please.
解决方案
Here it is
DECLARE @STARTDATE DATE='01/JAN/2014'
DECLARE @ENDDATE DATE='01/MAR/2014'
;WITH CTE as
(
SELECT CAST(@STARTDATE AS DATE) as [DAYS]
UNION ALL
SELECT DATEADD(DAY,1,[DAYS]) [DAYS]
FROM CTE
WHERE [DAYS] < CAST(@ENDDATE AS DATE)
)
SELECT DISTINCT COUNT([DAYS]) OVER(PARTITION BY DATENAME(WEEKDAY,[DAYS])) CNT,
DATENAME(WEEKDAY,[DAYS]) WD
FROM CTE
WHERE DATENAME(WEEKDAY,[DAYS]) = 'SATURDAY' OR DATENAME(WEEKDAY,[DAYS]) = 'SUNDAY'
ORDER BY DATENAME(WEEKDAY,[DAYS])
Here is your result
这篇关于如何从一系列日期算起周末天数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文