MySQL选择上个月的行,但它包含(31/30/28天)或闰年

时间:2015-11-15 18:25:26

标签: php mysql

现在,我有一个mysql查询来获取上个月的行date是时间戳列,

date BETWEEN date_format(NOW() - INTERVAL 1 MONTH, '%Y-%m-01')
AND last_day(NOW() - INTERVAL 1 MONTH);

但问题是,我只获得了上个月30天的记录。它可以在30天或更短的时间内正常工作。但是对于像12月这样的月份,我需要31天的所有记录。这里的修正是什么?谢谢。

3 个答案:

答案 0 :(得分:1)

如果您想要上一个月的数据,那么您可以使用减去当月当天的技巧:

where date >= date_sub(date_sub(curdate(), interval day(curdate()) - 1 day), interval 1 month) and
      date < date_sub(curdate(), interval day(curdate()) - 1 day)

答案 1 :(得分:0)

我尝试了很多参考文献&amp;最后我得到了我的确切答案。我的最终代码是,

EXTRACT(YEAR_MONTH FROM date) = EXTRACT(YEAR_MONTH FROM CURDATE() - INTERVAL 1 MONTH)

谢谢大家。

答案 2 :(得分:0)

您必须添加加1作为减去一个较低的日期扣除。