這取決於你如何分類一週。它是否需要整整一週?從非星期一的一天開始是否意味着如果他們在不是星期五的一天結束,那麼它不會算作整整一週? 這是您必須識別您的業務邏輯的地方。
這裏有一些基本的DATEDIFF
操作,您可以使用兩個日期,你可以以此爲基礎使用您的計算之間計算出的差異:
DECLARE @startDate DATE = '2017-10-01'
DECLARE @endDate DATE = '2018-03-31'
SELECT @startDate StartDate, @endDate EndDate,
DATEDIFF(DAY, @startDate, @endDate) DaysPassed,
DATEDIFF(WEEK, @startDate, @endDate) WeeksWorked,
DATEDIFF(DAY, @startDate, @endDate)/7.0 CalculatedWeeksWorked
產地:
StartDate EndDate DaysPassed WeeksWorked CalculatedWeeksWorked
---------- ---------- ----------- ----------- ---------------------
2017-10-01 2018-03-31 181 25 25.857142
此外,您可能需要考慮除週末外的工作天數,以計算完整工作週數,如果是這樣,請查看此文章:
get DATEDIFF excluding weekends using sql server
財年
摸出財年,你應該能夠簡單地看日期,像這樣的月份值:
DECLARE @startDate DATE = '2017-10-01';
-- if the month is greater than 3, add a year, else take the current year
SELECT CASE
WHEN DATEPART(MONTH, @startDate) > 3 THEN
CAST(DATEPART(YEAR, @startDate) + 1 AS VARCHAR(10)) + '-03-31'
ELSE
CAST(DATEPART(YEAR, @startDate) AS VARCHAR(10)) + '-03-31'
END AS fiscalYearEnd;
編輯@startDate
並測試以上,它應該有望在大多數情況下工作。我給了它一個快速測試,它似乎返回預期的結果。
感謝您的回覆。雖然這會起作用,但問題在於沒有「結束日期」,「結束日期」是本財年的最後一天,這正是我在解決問題時所遇到的問題(如我正在撰寫的報告將來會持續多年)。所以我需要弄清楚的是如何根據「開始日期」來計算會計年度結束日期。 –
@ADicks看到我的更新。 – Tanner
太棒了!我已經很快測試過了,它似乎表現出色。謝謝。 –