You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

统计近14天帖子数量时日期排序异常的技术问题

解决日期排序错误的问题

我一眼就看出问题出在哪了——你是按格式化后的字符串日期排序的,这可不靠谱!

问题原因

你SQL里的date字段是用DATE_FORMAT(created_at, "%d. %b")生成的字符串(比如01. Oct、25. Sep)。当你用ORDER BY date ASC时,数据库会按照字符串的字符顺序来排序,而不是实际的日期顺序。比如字符串01. Oct的第一个字符是0,25. Sep的第一个字符是2,0的ASCII码比2小,所以01. Oct会排在25. Sep前面,但实际上9月25日比10月1日早,这就导致了排序顺序完全颠倒。

修正后的SQL方案

你需要按原始日期的时间顺序来排序,而不是格式化后的字符串。这里有两种可靠的写法:

方案1:按原始日期的日期部分分组和排序

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(created_at) 
ORDER BY DATE(created_at) ASC;

这里用DATE(created_at)提取日期部分来分组和排序,它是真正的日期类型,会按照时间先后正确排序。

方案2:保留原分组逻辑,按分组内最早的时间排序

如果你想继续按格式化后的date分组,可以用MIN(created_at)拿到每组对应的最早时间,再按这个时间排序:

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 MIN(created_at) ASC;

这样既保留了你想要的格式化日期展示,又能保证排序是按实际时间顺序来的。

这两种写法都能让你的图表日期按9月25日到10月9日的正确顺序排列,解决你现在的排序问题。

内容的提问来源于stack exchange,提问作者CunnertA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 13:32:47