週の分類方法によって異なります。それは完全な週でなければならないのですか?月曜日ではない日から始まるのは、金曜日以外の日に終了した場合、1週間としてカウントされないということですか? ここでビジネスロジックを特定する必要があります。ここで
は、あなたがあなたの計算の基礎として使用できる2つの日付の間の違いを、うまくするために使用できるいくつかの基本的な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
また、週末を除いた仕事日数を考慮して、働いている週の数を計算することもできます。もしそうなら、この投稿を見てください。
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;
編集:
get DATEDIFF excluding weekends using sql server
年度は
年度動作するように、あなたは、単にそのような日付の月の値を見ることができるはずです上記をテストすると、ほとんどの場合うまくいくはずです。私はそれに簡単なテストを与えました、そして、それは期待された結果を返すようです。
DATEDIFF function
返信いただきありがとうございます。これがうまくいく間、問題は「終了日」がなく、「終了日」が現在の会計年度の最後の日であり、私が問題を抱えていることです(私が書いているレポート将来的には何年も続くだろう)。ですから、「開始日」に基づいて会計年度終了日を計算する方法がわかります。 –
@ADicksは私の更新を見ます。 – Tanner
それは素晴らしいです!私はすぐにテストしました。それはすばらしく動作するようです。ありがとうございました。 –