如果按时间顺序找不到名称,则按日期排序

时间:2011-10-18 13:25:21

标签: sql date

是否可以按日期订购,如果没有指定日期按时间排序,如果时间大于日期,那么它将首先在列表中。 例如,我们得到了表 -

id    date         time          name

1    18.10.2011    18.10.2011    number    
2    ---------     19.10.2011    number2    
3    ---------     18.10.2011    number3

它应该订购这样的东西 -

1    number2
2    number
3    number3

所有数据都以time()格式保存在数据库中,因此如果时间和日期相等,则会查看时钟。希望你能理解我。

2 个答案:

答案 0 :(得分:3)

尝试:

select id, date, time, name
from MyTable
order by greatest(time,coalesce(date,time))

(其中一些列名可能是保留字 - 我希望这是一个简化的例子!)

答案 1 :(得分:2)

您可以尝试使用ORDER BY CASE。这是未经测试的,但应该让您走上正确的轨道:

ORDER BY CASE
  WHEN date IS NOT NULL AND time < date THEN date
  WHEN time > date OR date IS NULL THEN time
  ELSE time
END

实际上,这里可能不需要ELSE time。前两个案例应该涵盖它。