Для 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');
Только одна из дат - 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")
и прекратить использовать одну платформу для разработки и другую платформу для развертывания.