1

我正在尝试逐月获取上个月 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 个呢?谢谢

4

2 回答 2

0

在一年前,这是我过去使用过的一种技术。使用@mysql 变量,根据给定月份/年份的第一天创建一个日期(通过 now()),然后减去 12 个月。此示例将从 2012 年 10 月 1 日到当前 - 这将包括当前 2013 年 10 月。要排除它,只需添加我重新添加 1 年的 where 子句,以便它从 2012 年 10 月 1 日 12:00:00 开始上午到 LESS THEN 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 月份的活动。

于 2013-10-16T11:55:11.313 回答
0

对于真正想要的年度数据,使用 11 MONTH 而不是 12

SELECT time
FROM touist_stories
WHERE time 
BETWEEN 
 date_sub(Now(), INTERVAL 11 MONTH)
AND 
 Now();
于 2020-02-13T17:04:49.667 回答