仅在MySQL中返回过去3个月的记录

use*_*933 21 mysql

我有一个带有时间戳字段的表.我如何获取过去3个月的数据?

特别是,3月是我当前的月份,比如03/2012.我需要返回3月,2月和1月份的记录.

Alw*_*yin 61

今天前3个月:

select * from table where timestamp >= now()-interval 3 month;
Run Code Online (Sandbox Code Playgroud)

从月初开始:

select * from table where timestamp >= last_day(now()) + interval 1 day - interval 3 month;
Run Code Online (Sandbox Code Playgroud)

  • @StephenKloder:你能解释一下这个问题吗?这里有什么'间隔1天'? (2认同)

fth*_*lla 11

要获得当月的第一天,您可以使用:

DATE_FORMAT(CURDATE(), '%Y-%m-01')
Run Code Online (Sandbox Code Playgroud)

如果当前日期是2013-03-13,它将返回2013-03-01,我们可以从该日期减去2个月以获得2013-01-01.您的查询可能是这样的:

SELECT *
FROM yourtable
WHERE data >= DATE_FORMAT(CURDATE(), '%Y-%m-01') - INTERVAL 2 MONTH
Run Code Online (Sandbox Code Playgroud)