我正在使用以下查询。
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次查询的结果不一样。第一个查询中的问题在哪里?
答案 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'
,所以...当然不是你想要的