0

週末のチケットを除外し、残りのチケット (平日のみ) をカウントする必要がある時点で立ち往生しています。

仮定しましょう:

tickets               dates
-----------           ----------
123                   04/05/2012
231                   04/06/2012
111                   04/07/2012
112                   04/08/2012 
113                   04/09/2012

したがって、上記の表には、平日と週末を含む 5 日間のデータがあります。

次のように、最終テーブルで週末ではなく平日のデータが必要です。

tickets               dates 
-----------           ----------
123                   04/05/2012
231                   04/06/2012
113                   04/09/2012
4

3 に答える 3

3

datefirst を気にしないでください。問題を引き起こす可能性があります

select * from @t 
where datediff(d, 0, dates)%7 < 5

編集: Datefirst はデータベースごとに異なります。そのため、週の「DatePart(dw,dates)」を使用する前に、datefirst を設定する必要があります。つまり、スクリプトを実行するたびに、その datefirst を呼び出す必要があります。関数に入れることにした場合、その関数内で使用できないため、失敗します。したがって、その関数を呼び出すたびに、日付の最初の部分を覚えている人に依存します。

私のソリューションは、データベースの個々の設定に依存していません。

それが何をするかはこれです:

1900-01-01 (月曜日) を表す 0 と日付の間の日数を計算します。

そのモジュラス 7 は、0 (月曜日) から 6 (日曜日) までの日数であるため、5 未満は平日です。

于 2012-04-06T13:24:19.407 に答える
1

通常、set datefirstdatepart関数の組み合わせを使用して、クエリで平日または週末を除外します。テーブル構造についてはあまり説明していないので、以下は大まかなガイドとしてのみ使用してください。

例は次のようになります。

set datefirst 1;  /* treat monday as first day of week */

select tickets from mytable 
    where datepart(dw,mydate) < 6;  /* select days 1 - 5 only */
于 2012-04-05T21:49:01.760 に答える
1
Select * From Tickets Where DatePart(dw,dates) between 2 And 6

日曜日が 1 日目であると仮定する

あなたはそれを台無しにすることができますSET DATEFIRST

于 2012-04-05T21:49:09.723 に答える