MySQL查询日期范围恰好是1个月

时间:2015-09-16 02:35:22

标签: php mysql sql

我正在尝试抽象查询MySQL级别的一个月的数据,而不必实施一系列条件来确定给定年份给定月份的最后一天。 LAST_DAY()似乎是答案,但它似乎只返回日期而不是提供的时间。

SELECT LAST_DAY('2011-02-05 23:59:59');

返回

2011-02-28

当我尝试在查询中使用它时,我会丢失该月最后一天的所有条目,因为没有时间不接受日期值。

SELECT * FROM subscriptions
WHERE (`modified_at` BETWEEN '2014-12-01 00:00:01' AND LAST_DAY('2014-12-01 23:59:59'));

如何修改此查询以便LAST_DAY函数生成当天的最后一个时间或保留给定的时间?

2 个答案:

答案 0 :(得分:3)

如何更改逻辑以忽略时间?

SELECT *
FROM subscriptions
WHERE `modified_at` >= '2014-12-01' AND
      `modified_at` < date_add('2014-12-01', interval 1 month)

这不需要last_day()

答案 1 :(得分:0)

使用ADDTIME(expr1,expr2); 像这样:

 ADDTIME(LAST_DAY('2011-02-05 23:59:59'), '23:59:59')