@events = Event.all(:order => "date DESC")
按日期订购我的活动,日期时间列.
是不是可以按日期订购,但只能按小时订购? (我在起诉sqlite3数据库)
谢谢!
解决方法
对于sqlite,
@events = Event.all(:order => "time(date) DESC")
小心使用它,因为它忽略了日期. (请参阅下面的“片刻”.)
CREATE TABLE test (date datetime primary key); INSERT INTO "test" VALUES('2011-01-01 08:00:00'); INSERT INTO "test" VALUES('2011-01-01 08:13:00'); INSERT INTO "test" VALUES('2011-01-01 09:23:00'); INSERT INTO "test" VALUES('2011-01-02 09:15:00');
其中一个日期是1月2日.
sqlite> select * from test order by time(date) desc; 2011-01-01 09:23:00 2011-01-02 09:15:00 2011-01-01 08:13:00 2011-01-01 08:00:00
片刻之后. . .
我意识到你想要按小时排序,而不是按时间排序.那个有问题的要求采用了不同的表达方式,并且排序不同.
@events = Event.all(:order => "strftime('%H',date) DESC") sqlite> select date from test order by strftime('%H',date) desc; 2011-01-01 09:23:00 2011-01-02 09:15:00 2011-01-01 08:00:00 2011-01-01 08:13:00
最后两行按小时正确排序,按时间错误排序.
还是晚一点. . .
OP在Heroku上部署,它不支持sqlite.要按小时降序排序,OP可能需要类似的东西
@events = Event.all(:order => "extract (hour from date) DESC")
并停止使用一个平台进行开发,并停止使用不同的部署平台.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。