比如有一个数据表,里面有两个日期字段,一个是开始时间,一个是结束时间。要求是:当结束时间大于当前时间,按开始时间顺序排列;当结束时间少于当前时间,按结束时间倒序排列。示例如下:(开始时间:beginTime,结束时间:endTime)

  1. select * from table1 where endTime>NOW()   
  2.  
  3. union 
  4.  
  5. select * from table1 where endTime<NOW()  
  6.  
  7. order by (case when endTime>NOW then 0 else 1),(case when endTime>NOW() then ABS(TO_DAYS(beginTime)-TO_DAYS(NOW())) else ABS(TO_DAYS(endTime)-TO_DAYS(NOW())))