web-dev-qa-db-ja.com

SQL Serverクエリで週末を除外するにはどうすればよいですか?

土曜日または日曜日であるDateTime列の値を除外するにはどうすればよいですか?

たとえば、次のデータが与えられた場合:

date_created
'2009-11-26 09:00:00'  -- Thursday
'2009-11-27 09:00:00'  -- Friday
'2009-11-28 09:00:00'  -- Saturday
'2009-11-29 09:00:00'  -- Sunday
'2009-11-30 09:00:00'  -- Monday

これは私が探している結果です:

date_created
'2009-11-26 09:00:00'  -- Thursday
'2009-11-27 09:00:00'  -- Friday
'2009-11-30 09:00:00'  -- Monday

ありがとう!

57
Andrew

曜日の計算を扱う場合、現在の DATEFIRST 設定を考慮することが重要です。このクエリは、 @@DATEFIRST 週の最初の曜日に可能な設定を考慮します。

SELECT *
FROM your_table
WHERE ((DATEPART(dw, date_created) + @@DATEFIRST) % 7) NOT IN (0, 1)
116
LukeH
SELECT date_created
FROM your_table
WHERE DATENAME(dw, date_created) NOT IN ('Saturday', 'Sunday')
17
kevchadders

SQL Serverを使用している場合、dwでDATEPARTを使用します。

SELECT date_created
FROM your_table
WHERE DATEPART(dw, date_created) NOT IN (1, 7);

EDIT:DATEPART(dw)によって返される実際の数値は、SET DATEFIRSTを使用して設定された値によって決定されることを指摘する必要があります。
http://msdn.Microsoft.com/en-us/library/ms181598.aspx

11
gkrogers

DATENAME()関数を試してください:

select [date_created]
from table
where DATENAME(WEEKDAY, [date_created]) <> 'Saturday'
  and DATENAME(WEEKDAY, [date_created]) <> 'Sunday'
8
Andrew

答えは、サーバーの週の開始設定によって異なるため、次のいずれかです。

SELECT [date_created] FROM table WHERE DATEPART(w,[date_created]) NOT IN (7,1)

サーバーの日曜日が週の最初の日である場合

または

SELECT [date_created] FROM table WHERE DATEPART(w,[date_created]) NOT IN (6,7)

サーバーの月曜日が週の最初の日である場合

質問がある場合はコメントしてください:-)

2
Gausie

テーブル列の休暇日をデフォルト値として計算-更新

SQLを使用している場合、次のクエリが役立ちます。 http://gallery.technet.Microsoft.com/Calculate ...