按时间排序,无论日期如何

时间:2014-04-26 19:12:20

标签: ruby-on-rails activerecord

我有一个带有属性Day和Time的Schedule模型。时间是数据类型的时间。

我有数据,即

  

星期一/ 2014-04-26 15:00:00.000000

     

星期一/ 2014-04-25 16:30:00.000000

在我的控制器中,我有@schedule = Schedule.all(:order => 'Day, Time')

现在是按日期排序,如何按时间排序,无论日期如何?

2 个答案:

答案 0 :(得分:4)

如果你正在使用Postgres,你可以使用

@schedule = Schedule.all.order('date_time_field::time').

如果您使用的是Mysql,我认为它就像

DATE_FORMAT(colName,'%H:%i:%s') TIMEONLY

SQLite的

@schedule = Schedule.all.order('time(date_time_field)')

答案 1 :(得分:0)

这是一个SQLite3 Ruby连接器问题。在Postgres上工作正常。

看起来SQLite对本文所述的时间数据类型没有原生的理解:Rails Active Record find(:all, :order => ) issue和此处:http://www.sqlite.org/datatype3.html

将属性从time重命名为class_time并未解决此处建议的问题:Sqlite3 activerecord :order => "time DESC" doesn't sort