我需要計算兩個日期之間的工作日差異。在SQL Server中是否有內置函數?有人可以提供一個關於如何做到這一點的例子嗎?如何計算工作日中兩個日期之間的差異
-1
A
回答
0
這是我寫的很快。把它封裝成一個函數或任何你需要的東西。
declare @StartDate datetime
declare @EndDate datetime
declare @TotalDiff int
declare @NumberOfWeekends int
SET @StartDate = '3/12/2013'
SET @EndDate = '3/22/2013'
SET @NumberOfWeekends = 0
SET @TotalDiff = DATEDIFF(d,@StartDate, @EndDate)
If @TotalDiff > 7
SET @NumberOfWeekends = @TotalDiff/7
else if DATEPART(dd, @EndDate) < DATEPART(DD, @StartDate)
SET @NumberOfWeekends = 1
select (@TotalDiff - 2*@NumberOfWeekends) as TotalWorkDays
+1
這太簡單了 - 只要將你的開始和結束日期改爲連續的星期六,結果就是7而不是預期的5 – Jamiec 2013-03-15 11:48:00
0
沒有,沒有什麼內置於SQL Server的直接給你的工作日數兩個日期之間,但也有一些內置的功能,這將使你寫一個。
首先,有幾個注意事項
世界不能同意什麼是「工作日」是。對我們大多數人來說,這是週六和週日。對於大多數中東地區來說,星期五是星期五&(週日是正常工作日)
世界當然不能就公共假日的構成達成一致,這幾乎總是被視爲非工作日。
您還沒有指定您希望如何處理這些情況,從而讓做一些假設:
- 週六和週日將非工作日
- 公共假期將不被考慮acount
現在,確定是否一個特定的天是週六或週日在SQL是容易的,給定類型的@date
DateTime
:
IF DATENAME(dw,@date) IN ('Saturday','Sunday')
考慮到這一點,給定一個開始和結束日期,你可以指望增量從@startDate
到@endDate
DECLARE @startDate DATETIME = '2013-01-01'
DECLARE @endDate DATETIME = '2013-01-20'
DECLARE @currDate DATETIME = @startDate
DECLARE @numDays INT = 0
WHILE @currDate<@endDate
BEGIN
IF DATENAME(dw,@currDate) NOT IN ('Saturday','Sunday')
SET @numDays = @numDays + 1
SET @currDate = DATEADD(day,1,@currDate)
END
SELECT @numDays
注:這是不可inclsive所以不會算@endDate
。你可以改變它是包容性的,通過改變WHILE @currDate<@endDate
到WHILE @currDate<[email protected]
相關問題
- 1. 在C#中,我如何計算兩個日期之間的工作日差異?
- 2. 計算javascript中兩個日曆日期之間的差異
- 3. JScript:如何計算兩個日期時間之間的差異?
- 4. 如何計算Objective-C中兩個日期之間的差異?
- 5. 如何計算VB.net中兩個日期之間的差異?
- 6. 如何計算IronPython中兩個日期之間的差異?
- 7. 如何計算日期間隔中兩行之間的差異?
- 8. 如何計算兩個日期之間的差異
- 9. 如何計算兩個日期之間的差異正確php
- 10. 如何用PHP計算兩個日期之間的差異?
- 11. 如何使用Node.js計算兩個日期之間的差異?
- 12. 如何計算兩個日期之間的差異?
- 13. 計算MySQL中兩個日期時間之間的差異
- 14. 計算MVC中兩個日期時間之間的差異5
- 15. 計算兩個日期之間的差異作爲簽名值
- 16. 計算兩個日期字段的計數之間的差異
- 17. 如何計算Javascript中兩個日期之間的年,月和日差異?
- 18. 計算日期之間的差異 - Postgres
- 19. C計算日期之間的差異
- 20. 計算PHP中兩個日期之間的差異
- 21. 計算MySQL中兩個日期條目之間的差異
- 22. 如何計算兩個日期之間的總工作時間
- 23. 如何計算javascript中兩個日期時間的差異?
- 24. 計算工作日期中以小時/分鐘計的兩個日期之間的差異
- 25. 如何計算兩個日期之間的時間差 - MySql
- 26. 如何計算兩個日期之間的時間差? - MySql
- 27. 兩個日期之間的計算差異MySQL/Python
- 28. 使用Groovy計算兩個日期之間的月差異
- 29. 計算兩個日期之間的差異
- 30. 試圖計算兩個日期之間的差異
你能不能給這兩個日期和您預期的結果的例子嗎? – 2013-03-15 11:43:55
想要考慮公衆假期嗎?如果是這樣,你需要一張表來存儲他們,因爲他們按國家/地區更改。 – Jamiec 2013-03-15 11:44:58
你意識到你已經標記爲正確的答案,它給出了完全不正確的結果?只需插入'3/16/2013'和'3/23/2013'作爲開始和結束日期(即週六至週六)。你期望有多少個工作日 - 我希望是'5'。你標出的答案給出了'7' – Jamiec 2013-03-15 12:05:18