Mysql date_sub间隔12个月

时间:2013-10-16 10:36:19

标签: mysql

我正试图从上个月的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个呢? 感谢

2 个答案:

答案 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();