2017-10-17 3 views
0

今年の中間期(4月1日〜3月31日)までに従業員が何週間働いたかを計算したいと思っています)。会計年度の終わりとその日の終わりを動的に計算する

たとえば、従業員は01/10/2017(イギリスの日付)に会社で働き始めました.2018年3月31日までに働いた週数を計算する必要があります。

従業員の開始日のフィールドは、 'Employee'テーブルの 'START_DATE'です。私はあなたが想像することができるすべての日付形式のカレンダーテーブルも持っていますが、会計年度も含まれています。

私はこの質問を見つけたが、それは非常に私の問題を解決していません:Calculate totals of field based on current fiscal year only - SQL

感謝すべてのヘルプ。

答えて

1

週の分類方法によって異なります。それは完全な週でなければならないのですか?月曜日ではない日から始まるのは、金曜日以外の日に終了した場合、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
+0

返信いただきありがとうございます。これがうまくいく間、問題は「終了日」がなく、「終了日」が現在の会計年度の最後の日であり、私が問題を抱えていることです(私が書いているレポート将来的には何年も続くだろう)。ですから、「開始日」に基づいて会計年度終了日を計算する方法がわかります。 –

+0

@ADicksは私の更新を見ます。 – Tanner

+0

それは素晴らしいです!私はすぐにテストしました。それはすばらしく動作するようです。ありがとうございました。 –

0

0は小数点の数である
ROUND(DATEDIFF(CURRENT_TIMESTAMP, START_DATE)/7, 0) AS weeks 

WEEKSの問題点は、1月1日を越える日付で正しい結果を返さないことです。

+0

残念ながら、これは会計年度を考慮していません。年末年始は、会計年度(4月1日〜3月31日)に従います。 –

関連する問題