1

ここに問題があります。2 つの日付の間の営業日 (週末を除く) を見つける必要があります。私は現在、このアプローチを見つけて、うまく使うことができました:

SELECT 5 * (DATEDIFF(DateClosed, DateOpened) DIV 7) + MID('0123455501234445012333450122234501101234000123450', 
  7 * WEEKDAY(DateOpened) + WEEKDAY(DateClosed) + 1, 1) AS TotalResolutionTimeBusinessDays 
FROM table1

これは、行列に基づく複雑な計算です。

 | M T W T F S S
-|--------------
M| 0 1 2 3 4 5 5
T| 5 0 1 2 3 4 4
W| 4 5 0 1 2 3 3
T| 3 4 5 0 1 2 2
F| 2 3 4 5 0 1 1
S| 0 1 2 3 4 0 0
S| 0 1 2 3 4 5 0

マトリックスでは、指定された x と y の値のペア (WEEKDAY(@S) と WEEKDAY(@E)) の交点により、2 つの値の稼働日の差が得られます。テーブル内の 49 の値は、次の文字列に連結されます。0123455501234445012333450122234501101234000123450.

これは私にとってはうまくいきますが、日付の違いを別の形式で提示する必要があります。例: 2 つの日付があるとします: StartDate = '2013-06-28 01:27:35' と EndDate = '2013-07-08 16:47:21'。上記の方法を使用すると、正しい 7 営業日が得られます。しかし、日付間のすべての違い(時間と分を含む)を数える必要があるため、次のようになります

SELECT TIME_TO_SEC(TIMEDIFF('2013-07-08 16:47:21','2013-06-28 01:27:35')) / 3600 / 24 

週末を除くと、7.64日のような値になるはずです。

その形式に基づいて計算を記述する方法について何か提案はありますか? どんな助けでも大歓迎です。

4

0 に答える 0