2009-12-29 103 views

回答

5

要獲得在上個月的行,你可以使用類似:

SELECT * FROM table WHERE product_date >= DATE_SUB(NOW(), INTERVAL 1 MONTH); 

或者最後一週:

SELECT * FROM table WHERE product_date >= DATE_SUB(NOW(), INTERVAL 1 WEEK); 
2

對於在最近七天

WHERE product_date BETWEEN DATE_ADD(NOW(), INTERVAL -7 DAY) AND NOW() 

上個月:

WHERE product_date BETWEEN DATE_ADD(NOW(), INTERVAL -1 MONTH) AND NOW() 
0

雖然mopoke的解決方案會從過去的30天或7天的結果,這給你的只有當月結果:

SELECT * FROM table WHERE DATE_FORMAT(product_date, '%c-%Y') = DATE_FORMAT(CURDATE(), '%c-%Y'); 

或爲當前周:

SELECT * FROM table WHERE DATE_FORMAT(product_date, '%u-%Y') = DATE_FORMAT(CURDATE(), '%u-%Y'); 
+0

使用函數(在本例中爲DATE_FORMAT)意味着索引(如果存在於「product_date」列)不能使用。 – 2009-12-29 23:35:15

+0

這是正確的,但對於較小的數據集,如果您必須獲得當前的周或月的結果,那麼這是一個可接受的缺點 - 至少我不知道任何其他方法。 – 2009-12-29 23:40:46

+0

謝謝。大肚...... – lovespring 2009-12-30 08:24:13