一,问题描述:
通过时间字符串排序,发现:"3日"比"31日"靠前

二、原因分析
因为comment_time字段是字符型,字符串排序从左到右, "日" 比 "1" 大,所以就是上图那种排序
三、解决办法
把时间字符串格式化即可,使用函数:STR_TO_DATE(str, format)
STR_TO_DATE( `comment_time`,'%Y年%m月%d日')

格式化时间字符串并按时间排序:
SELECT * FROM qx_monitoring_comment WHERE attraction_id = 1 ORDER BY STR_TO_DATE( `comment_time`,'%Y年%m月%d日') DESC;

本文揭示了在处理时间字符串时可能出现的排序错误,当使用字符型字段进行排序时,3日会错误地排在31日之前。文章详细分析了这一现象的原因,并提供了使用STR_TO_DATE函数将时间字符串格式化为日期类型,从而正确排序的解决方案。
4175

被折叠的 条评论
为什么被折叠?



