如何在MySQL中按Trip ID末尾的日期倒序排序查询结果?
解决方案
首先你原查询里的date字段在表结构中不存在,表中对应的日期字段是thedate。如果thedate的值和Trip ID末尾的日期一致,直接修改查询用这个字段排序是最高效的方式:
$resultSet = $mysqli->query("Select tripid from college order by thedate desc");
如果thedate字段不可用,必须从tripid的后缀日期来排序,需要根据你Trip ID的具体格式选择对应的SQL函数提取日期部分:
常见格式处理示例
格式示例:TripID后缀为8位纯数字日期(如
TRIP00120240520)
使用RIGHT()提取最后8位,再转成日期类型排序:$resultSet = $mysqli->query("Select tripid from college order by STR_TO_DATE(RIGHT(tripid, 8), '%Y%m%d') desc");格式示例:TripID后缀为带分隔符的日期(如
TRIP001-2024-05-20)
提取最后10位带分隔符的日期字符串:$resultSet = $mysqli->query("Select tripid from college order by STR_TO_DATE(RIGHT(tripid, 10), '%Y-%m-%d') desc");格式示例:TripID用分隔符分隔日期(如
TRIP_001_20240520)
使用SUBSTRING_INDEX()提取最后一段日期部分:$resultSet = $mysqli->query("Select tripid from college order by STR_TO_DATE(SUBSTRING_INDEX(tripid, '_', -1), '%Y%m%d') desc");
注意:如果数据量较大,优先使用表中已有的
thedate字段排序,避免对每个tripid做字符串解析,提升查询性能。
内容的提问来源于stack exchange,提问作者user22417657
相关产品推荐
相关产品推荐

