ruby-on-rails – Rails – 按小时排序

@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")

并停止使用一个平台进行开发,并停止使用不同的部署平台.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...