3

元の質問

別のテーブルの日数から日付を減算する Microsoft SQL ステートメントを作成する必要があります。したがって、本質的に、テーブルの例は以下のとおりです。

Table 1 (date)           Table 2 (number of days)
2013-05-08 23:59:13.000     7
2013-05-08 23:59:16.000     7
2013-05-08 23:59:06.000     7

どんな助けでも大歓迎です。

更新された質問

私が作業しなければならない唯一の 2 つの項目は、次の情報です。

ここに画像の説明を入力

請求書が請求書キューにある期間を知る必要があります。TimeoutDate は、請求書がキューからタイムアウトする時間です。TimeOutDays は、このキューがタイムアウトするまでの日数ですが、営業日なので週末は除きます。

したがって、この情報に基づいて計算すると、請求書は8 営業日待ち行列に入っています<-- これがクエリから取得する必要がある回答です。

追加情報

請求書は 2013 年 4 月 30 日にシステムに入力されましたが、webapp は請求書がシステムに入力された日をカウントしないため、タイムアウト カウンターは翌日の 2013 年 5 月 1 日から開始されます。これがもう少し明確に説明されることを願っています!

簡単なクエリがありますが、必要なものが表示されないため、役に立ちませんが、実際には、必要なものの結果が以下になります。

ここに画像の説明を入力

4

2 に答える 2

1

試す

SELECT DATEADD(day, -(t2.days), t1.datefield) new_date
  FROM table1 t1 JOIN
       table2 t2 ON t1.id = t2.id

出力:

|                   NEW_DATE |
------------------------------
| May, 01 2013 23:59:13+0000 |
| May, 01 2013 23:59:16+0000 |
| May, 01 2013 23:59:06+0000 |

SQLフィドル

更新:完全に変更された質問に対する解決策

SELECT timeoutdate,
       timeoutdays,
       timeoutdays
       -((DATEDIFF(dd, GETDATE(), timeoutdate) + 1)
       -(DATEDIFF(wk, GETDATE(), timeoutdate) * 2)
       -(CASE WHEN DATENAME(dw, GETDATE()) = 'Sunday' THEN 1 ELSE 0 END)
       -(CASE WHEN DATENAME(dw, GETDATE()) = 'Saturday' THEN 1 ELSE 0 END)) daysinqueue
FROM table1

出力:

|             TIMEOUTDATE | TIMEOUTDAYS | DAYSINQUEUE |
-------------------------------------------------------
| 2013-05-14 23:59:13.000 |          10 |           9 |

SQLフィドル

2つの日付間の稼働日数を取得するためのソリューションを提供してくれた@CMSに感謝します

于 2013-05-08T02:03:56.987 に答える