【问题标题】:MySQL show 12 month interval without first partial monthMySQL 显示没有第一个部分月份的 12 个月间隔
【发布时间】:2016-07-08 15:42:24
【问题描述】:

我想按月列出过去 12 个月内发生的事情的得分。我注意到我下面的查询将第一部分月份的结果与最后一个部分月份的结果相结合。也就是说,我的 7 月报告结合了 2015 年 7 月 9 日至 31 日和 2016 年 7 月 1 日至 8 日(现在是 7 月 8 日)。我只希望最近一个月代表最近一年。这是我正在使用的...

$query = "SELECT record_id, 
   time_scored, 
   MONTH(time_scored) as month_added, 
   score, comment 
FROM records 
WHERE score IS NOT NULL AND 
   time_scored >= DATE_SUB(curdate(),INTERVAL 12 MONTH) 
ORDER BY time_scored DESC";

任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 你能准确地展示你想要的结果吗?我不明白你想要哪个“七月”。
  • 所以我有一个函数可以将原始分数计算为新的月度分数。这是我得到的: 7 月 43 日(这个数字包括 2015 年 7 月和 2016 年 7 月的数据) 6 月 28 日 5 月 36 日......等等...... 8 月 23 日。我想有一种方法可以在函数中移动 2015 年 7 月的数据,但我宁愿在原始查询中不使用它。
  • 所以您只需要 2016 年 7 月的数据吗?那么从 2015 年 8 月到 2016 年 7 月(含)?
  • 正确。结果将是显示这些月份的列表。

标签: php mysql sql date


【解决方案1】:

从下个月的第一天减去 12 个月

$query = "SELECT record_id, 
   time_scored, 
   MONTH(time_scored) as month_added, 
   score, comment 
FROM records 
WHERE score IS NOT NULL AND 
   time_scored >= DATE_SUB(DATE_ADD(subdate(curdate(), (day(curdate())-1)), INTERVAL 1 MONTH),INTERVAL 12 MONTH) 
ORDER BY time_scored DESC";

【讨论】:

  • 就是这样!非常感谢!
猜你喜欢
  • 2015-02-20
  • 1970-01-01
  • 2012-02-15
  • 2020-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-15
  • 1970-01-01
相关资源
最近更新 更多