MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 精选文章 / 正文

mysql 日期排序:当天排在最前面,当天之后正序,当天之前倒序

2025-04-05 19:02 huorong 精选文章 4 ℃ 0 评论

最近项目中有个需求,就是要把当前的用户预约信息进行排序,当天排在最前面,当天之后按appoint_day正序,当天之前按appoint_day倒序

SELECT * FROM my_table ORDER BY CASE WHEN appoint_day = CURDATE() THEN 0 WHEN appoint_day > CURDATE() THEN 1 ELSE 2 END, CASE WHEN appoint_day = CURDATE() THEN appoint_time ELSE appoint_day END, CASE WHEN appoint_day < CURDATE() THEN appoint_day END DESC;


首先,使用CASE语句将“当天”的记录视为最前面的记录,根据“当天之后正序”的要求,将其余记录正序排列,根据“当天之前倒序”的要求,将所有其他记录逆序放置在最后。


然后,我们使用第二个CASE语句,当appoint_day与当前日期相同时,将按appoint_time进行排序,以确保是按照约定时间进行排序。否则,我们将其按appoint_day的值排序,并随后执行第三个CASE语句,以确保已经在当前日期之前的所有记录按照日期倒序排列。

Tags:case when end

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言