2009-12-29 72 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