2011-09-12 20 views
7

我有一個包含日期(Y-m-d H:i:s)列的數據(類型是datetime)。我想從我輸入的日期前1周選擇所有記錄(在以下示例中:2011-09-17 00:00:00,但我有一些麻煩。以下是我得到的:在mysql中選擇前一個星期的記錄

SELECT * FROM emails WHERE (DATE(date) = date_sub(date('2011-09-17 00:00:00'), 1 week)) 

我在做什麼錯了感謝

回答

20

我覺得你在1 week前失蹤INTERVAL

SELECT * 
FROM emails 
WHERE (DATE(date) = date_sub(date('2011-09-17 00:00:00'), INTERVAL 1 week)); 

這裏是我跑,做工作,爲DATE_SUB()部分查詢:

SELECT * 
FROM wp_posts 
WHERE post_modified > DATE_SUB(CURDATE(), INTERVAL 4 WEEK); 

您可以使用一個負值,去做一個「N個星期之前給定的日期」查詢所以像這樣的工作:

SELECT * 
FROM wp_posts 
WHERE post_modified > DATE_SUB(CURDATE(), INTERVAL -1 WEEK); 

或者:

SELECT * 
FROM emails 
WHERE (DATE(date) = date_sub(date('2011-09-17 00:00:00'), INTERVAL -1 week)) 
+1

感謝。我使用了第一個代碼(我需要在「1周」之前添加「內部」)。 –

3

試試這個,我喜歡堅持DATE_ADD,只使用負值。

SELECT * FROM emails WHERE date >= DATE_ADD('2011-09-17 00:00:00', INTERVAL -1 WEEK) 
3
SELECT * FROM wp_posts 
WHERE post_modified 
BETWEEN SYSDATE() - INTERVAL 7 DAY 
AND SYSDATE(); 
相關問題