SQLServerで日付のフィールドを曜日で検索するにはどうしたら?

Kinya
2014-05-14 12:24 1437 1
SQLServer で日付のフィールドを曜日で検索するにはどうしたらいいでしょう

Date |col1|col2
2012/10/1 |A|B
2012/10/2 |A|B
2012/10/3 |A|B
2012/10/4 |A|B
・・・・・
2013/12/1 |A|B

というような場合、
Dateのところを、2013/10/1-2013/10/31で、かつ、そのうちの月曜日だけというようにしたいのですが・・・

コメント

2014年 05月 15日 (18:06)
こんにちは。
イノ(inno)です。

曜日のデータはDATEPARTを使うとできます。
DATEPARTについては下記のリンクをご参考ください。

http://www.innoya.com/Board/ViewTip.aspx?menuID=4&idx=441

テストため下記のSQLを準備しましたので、
下記のSQLを実行して結果をご確認ください。

--テストテーブル作成
CREATE TABLE dbo.TempData
(
Idx int
, RegDate datetime
)

--テストデータ登録
DECLARE @i int
SET @i = 0

WHILE (@i < DATEDIFF(DD, '2012-01-01', '2013-12-01'))
BEGIN

INSERT INTO dbo.TempData (Idx, RegDate)
VALUES (@i, DATEADD(dd, @i, '2012-01-01'))

SET @i = @i + 1

END

--結果SQL
SELECT *
FROM dbo.TempData
WHERE RegDate >= '2013/10/01' AND RegDate <= '2013/10/31'
AND DATEPART(DW,RegDate) = 2


--実行結果 (月曜日のみ検索)
Idx RegDate
645 2013-10-07 00:00:00.000
652 2013-10-14 00:00:00.000
659 2013-10-21 00:00:00.000
666 2013-10-28 00:00:00.000