我有一个日期,我怎么写一个where
检查上个月到现在(第一个月或今天的一个月-1)?
答案 0 :(得分:31)
SELECT * FROM table WHERE dateField > DATE_SUB(NOW(), INTERVAL 1 MONTH)
这将选择比当前时间戳减去一个月更新dateField
的所有行(例如,今天给出的是2009年9月26日00:56,它会给出比2009年8月26日更新的行○点56)
答案 1 :(得分:6)
实际上,上个月到现在为止:
从月初开始:
SELECT * FROM table
WHERE date >= DATE_FORMAT(CURRENT_DATE - INTERVAL 1 MONTH, '%Y-%m-01')
AND date <= NOW()
一个月前:(希望你的未来日期没有在桌子上)
SELECT * FROM table
WHERE date >= (CURRENT_DATE - INTERVAL 1 MONTH)
或者,你可能只想要上个月...说今天是九月,你想要所有的八月,不包括九月的任何一个......这就是我所理解的上个月&#39;。
SELECT * FROM table
WHERE date >= DATE_FORMAT(CURRENT_DATE - INTERVAL 1 MONTH, '%Y/%m/01')
AND date < DATE_FORMAT(CURRENT_DATE, '%Y/%m/01')
你也可以做同样的结果:
SELECT * FROM table
WHERE YEAR(date) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH)
AND MONTH(date) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH)