【问题标题】:Retrieving all posts count with date sorts date wrong检索所有帖子计数与日期排序日期错误
【发布时间】:2021-01-24 17:06:03
【问题描述】:
我正在尝试制作一个图表,其中 X 轴是日期(过去 14 天),图表本身显示了该日期的帖子数。但是,它从 1. oct -> 9. oct 开始,然后继续 25. sep -> 30.sep
我的 SQL:
SELECT DATE_FORMAT(created_at, "%d. %b") AS date, count(*) as count
FROM posts
WHERE created_at BETWEEN NOW() - INTERVAL 14 DAY AND NOW()
Group by date
ORDER BY date ASC
问题图片:https://i.imgur.com/d8AIRu6.png
【问题讨论】:
标签:
mysql
sql
string
count
sql-order-by
【解决方案1】:
问题在于order by 子句中的date 引用了select 子句中定义的别名,即日期的字符串表示形式。您不能使用它对结果集进行任意排序。
这是一种解决方法:将另一个表达式添加到具有 date 数据类型的 group by 子句 - 然后您可以使用它来对结果进行排序:
SELECT date_format(created_at, '%d. %b') AS date, count(*) as count
FROM posts
WHERE created_at BETWEEN NOW() - INTERVAL 14 DAY AND NOW()
Group by date, date(created_at)
ORDER BY date(created_at) ASC