我正试图从上个月的12个月中逐一获得所有帖子。我有一个非常正确的查询:
SELECT MONTH(time) as mois, YEAR(time) as annee, count(*) as nbre
FROM touist_stories
WHERE time >= DATE_SUB(now() + INTERVAL 1 MONTH, INTERVAL 2 YEAR)
group by MONTH(time)
order by YEAR(time) DESC, MONTH(time) DESC
但是一个月总是缺失:2012年11月 我试图添加
+ INTERVAL 1 MONTH
到现在()但它仍然缺失......我怎样才能获得上个月的12而不是11个呢? 感谢
答案 0 :(得分:0)
一年前,这是我过去使用的一种技术。使用@mysql变量,根据给定月/年的第一天(通过now())创建日期,然后减去12个月。此示例将从2012年10月1日到当前 - 将包括当前的2013年10月。要排除它,只需添加到我重新添加1年的where子句,因此它从2012年10月1日12:00:00开始我在2013年10月1日晚上12:00:00。
SELECT
MONTH(time) as mois,
YEAR(time) as annee,
count(*) as nbre
FROM
touist_stories,
( select @lastYear := date_add( DATE_FORMAT(NOW(),
'%Y-%m-01'), interval -11 month) ) sqlvar
WHERE
time >= @lastYear
group by
MONTH(time)
order by
YEAR(time) DESC,
MONTH(time) DESC
修改为11个月前(每个例子11月),包括最新和包括所有当前10月活动。
答案 1 :(得分:0)
对于真正想要的年度数据,请使用11个月而非12个月
SELECT time
FROM touist_stories
WHERE time
BETWEEN
date_sub(Now(), INTERVAL 11 MONTH)
AND
Now();