我在時間表報告上撰寫SQL查詢。我需要報告只返回選定日期的周的詳細信息。例如,如果我選擇02/01/2012(dd/MM/yyyy),那麼它應該只在2012年2月1日至2012年1月8日之間返回結果。SQL僅返回指定星期的日期
感謝
我在時間表報告上撰寫SQL查詢。我需要報告只返回選定日期的周的詳細信息。例如,如果我選擇02/01/2012(dd/MM/yyyy),那麼它應該只在2012年2月1日至2012年1月8日之間返回結果。SQL僅返回指定星期的日期
感謝
SELECT
*
FROM
yourTable
WHERE
dateField >= @yourDate
AND dateField < @yourDate + 7
SQL的一些變化可能增加7天一個DATEVALUE的具體方式。如...
- DateAdd(Day, 7, @date)
- DATE_ADD(@date, INTERVAL 7 DAYS)
- 等,等
此選項既指標友好的,是有彈性的,以有時間部分以及日期部分的數據庫字段。
SELECT * FROM table_name
WHERE date BETWEEN '1/02/2012' AND '1/08/2012';
你可以用你的日期更換例如日期和yourdate + 6
看這裏例如:http://www.roseindia.net/sql/sql-between-datetime.shtml
當使用BETWEEN時,這應該是+6,而不是+7。 – MatBailie 2012-01-12 16:05:39
你當然是對的。我習慣使用時間戳:( - 也適用於我 – tehdoommarine 2012-01-12 17:42:05
你最簡單的就是WEEK_OF_YEAR功能在你的SQL引擎相當於
但是您也可以使用DATE_ADD
WHERE table.date BETWEEN target_date AND DATE_ADD(target_date,INTERVAL 7 DAY)
這取決於您正在使用的數據庫系統。 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');
這個混淆INDEX並導致掃描而不是查找 – MatBailie 2012-01-12 16:06:07
這樣,但是添加七天到任意日期(如在您的帖子(Dems)中),可能沒有必要導致有一週的時間(we.g 。上週的星期三到本週的星期三)。你可能會很快,但是正確嗎? – Mithrandir 2012-01-12 16:09:25
啊,我找到你了!它取決於OP是否需要一個日曆周,以及OP認爲該周的內容開始一天,我只是假設一個7天的窗口,現在我只是不確定OP想要哪個:)好點! – MatBailie 2012-01-12 16:13:38
你的意思是日曆周? (如果指定星期三,則計算包括前一個星期一到下一個星期日,例如?)或僅指定日期開始的7天? – MatBailie 2012-01-12 16:14:55
無論用戶選擇什麼日子加上7 – Melanie 2012-01-12 16:43:00