2012-01-12 63 views
0

我在時間表報告上撰寫SQL查詢。我需要報告只返回選定日期的周的詳細信息。例如,如果我選擇02/01/2012(dd/MM/yyyy),那麼它應該只在2012年2月1日至2012年1月8日之間返回結果。SQL僅返回指定星期的日期

感謝

+0

你的意思是日曆周? (如果指定星期三,則計算包括前一個星期一到下一個星期日,例如?)或僅指定日期開始的7天? – MatBailie 2012-01-12 16:14:55

+0

無論用戶選擇什麼日子加上7 – Melanie 2012-01-12 16:43:00

回答

1
SELECT 
    * 
FROM 
    yourTable 
WHERE 
    dateField >= @yourDate 
    AND dateField < @yourDate + 7 

SQL的一些變化可能增加7天一個DATEVALUE的具體方式。如...
- DateAdd(Day, 7, @date)
- DATE_ADD(@date, INTERVAL 7 DAYS)
- 等,等

此選項既指標友好的,是有彈性的,以有時間部分以及日期部分的數據庫字段。

0

你最簡單的就是WEEK_OF_YEAR功能在你的SQL引擎相當於

但是您也可以使用DATE_ADD

WHERE table.date BETWEEN target_date AND DATE_ADD(target_date,INTERVAL 7 DAY) 
+0

當使用BETWEEN時,應該是'6 DAY'而不是'7 DAY' – MatBailie 2012-01-12 16:11:55

+0

你說的對,我習慣使用時間戳:( – amccausl 2012-01-12 16:33:02

0

這取決於您正在使用的數據庫系統。 MySQL有一個功能卡列斯WEEK(),SQL Server可以做這樣的事情與DATEPART()函數:

的MySQL:

SELECT 
* 
FROM table 
WHERE WEEK(date_col) = WEEK('02/01/2012'); 

SQL SERVER:

SELECT 
    * 
    FROM table 
    WHERE DATEPART(WEEK, datecol) = DATEPART(WEEK,'02/01/2012'); 
+0

這個混淆INDEX並導致掃描而不是查找 – MatBailie 2012-01-12 16:06:07

+0

這樣,但是添加七天到任意日期(如在您的帖子(Dems)中),可能沒有必要導致有一週的時間(we.g 。上週的星期三到本週的星期三)。你可能會很快,但是正確嗎? – Mithrandir 2012-01-12 16:09:25

+0

啊,我找到你了!它取決於OP是否需要一個日曆周,以及OP認爲該周的內容開始一天,我只是假設一個7天的窗口,現在我只是不確定OP想要哪個:)好點! – MatBailie 2012-01-12 16:13:38

相關問題