最近项目需要查询距离现在最近的数据,且未到时间与已过时间的数据分组展示。找到解决方法记录如下: 时间段分组 利用case when将未到时间和已过时间的进行分组并排序 ORDER BY CASE WHEN s.start_time>NOW() THEN 0 ELSE 1 end 距离当前时间最近排序 与当前时间相减取绝对值进行排序 ORDER BY CASE WHEN s.start_time<NOW() THEN 1 ELSE 0 end,abs(DATEDIFF(s.start_time,now()))