如何通过提供开始日期和结束日期按月分组?

时间:2015-06-08 06:21:14

标签: mysql

我正在使用以下查询。

select DATE_FORMAT(created_at, '%Y-%m') AS month, sum(points) from table_name group by month;

我得到的是总和,但结果与我在日期范围内尝试时得到的结果不一致。例如,

select sum(points) from table_name where '2015-01-01 00:00:00' <= date(created_at) <= '2015-01-31 23:59:59';

2015年1月上述第1和第2次查询的结果不一样。第一个查询中的问题在哪里?

1 个答案:

答案 0 :(得分:1)

您编写第二个查询的方式无效。您只能使用二进制表达式,因此您的查询应如下所示:

select sum(points) 
from table_name 
where '2015-01-01 00:00:00' <= date(created_at)
  and date(created_at) <= '2015-01-31 23:59:59';

在您的原始表单中,正在评估的位置(我认为):

  • 首先:'2015-01-01 00:00:00' <= date(created_at)

    假设这是真的,这将被评估为1

  • 第二名:'2015-01-01 00:00:00' <= date(created_at) <= '2015-01-31 23:59:59'

    但这相当于1 <= '2015-01-31 23:59:59',所以...当然不是你想要的