select metric,MONTH(Created) as month,YEAR(Created) as year
from table
where metric = value
AND ( ( YEAR(Created) = YEAR(NOW()) AND DATE(Created) >= DATE(NOW() - INTERVAL :month MONTH) )
OR ( Year(Created) = YEAR(NOW()) - 1 AND Month(Created) > MONTH(INTERVAL :month MONTH + NOW()) ) )
order by Created;
8条答案
按热度按时间2eafrhcq1#
三个月前:
从每月的第一天开始:
neskvpey2#
要获取当前月份的第一天,您可以使用以下命令:
如果当前日期是
2013-03-13
,它将返回2013-03-01
,我们只需从该日期减去2个月即可获得2013-01-01
。您的查询可能是这样的:lsmd5eda3#
我知道这是一个老问题,但为了可能保存其他人的时间,并总结上述答案,以满足以下情况:(1)当前月份的日期和(2)前2个月的日期(显示数据统计时常见):
yruzcnhs4#
假设您使用的是SQL Server(Oracle、MySQL和其他数据库都有类似的日期函数),您可以使用dateadd函数为当前日期加上或减去一个时间间隔。
如果你想要一个完整的三个月,你可以从今天减去3个月:
DATEADD(m,-3,getdate())
但是,正如您所说,您只需要1月,2月和3月的数据。您必须根据今天的日期进行一些计算:
dateadd(m,-2, CONVERT(datetime, CONVERT(VARCHAR(2), MONTH(getdate())) + '/01/' + CONVERT(VARCHAR(4), YEAR(getdate()))))
最后,得到一个类似于
--- edit --- erf,我刚刚注意到了“mysql”标签...你可以在这里获得关于MySQL日期函数的更多信息:https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
w8f9ii695#
另一种可能性是:
bogh5gae6#
使用此代码在这里获得前3个月从某一日期
55ooxyrt7#
Mysql查询显示最近X个月的数据。
注意:如果X〉12,则此查询将不起作用
j2datikz8#