@events = Event.all(:order => "date DESC")
для заказа моих событий по дате, a datetime
столбец.Рельсы - заказ по часам
Можно ли заказать их не по дате, а только по часам? (Я подаю в суд на базу данных sqlite3
)
Спасибо!
@events = Event.all(:order => "date DESC")
для заказа моих событий по дате, a datetime
столбец.Рельсы - заказ по часам
Можно ли заказать их не по дате, а только по часам? (Я подаю в суд на базу данных 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');
Только одна из дат на 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. Для сортировки по часам по убыванию, ОП, вероятно, нужно что-то вроде
@events = Event.all(:order => "extract (hour from date) DESC")
И прекратить использование одной платформы для разработки и другую платформу для развертывания.
Привет, Catcall, большое спасибо за ваш ответ. К сожалению, ваше предложение хорошо использует локальный сервер, но не работает на Heroku, который утверждает, что имеет синтаксическую ошибку. – Abramodj
Если вы развертываете на Heroku, вам не следует разрабатывать SQLite. Установите PostgreSQL и используйте это как свою платформу разработки. –
Хотелось бы, чтобы я мог дать вам больше одного взлома за «прекращение использования одной платформы для разработки и другую платформу для развертывания», для этого должен быть макрос Markdown. Я думаю, что Heroku должен проверить ваш 'database.yml' и кричать на вас, если ваш адаптер разработки - это что-то другое, кроме PostgreSQL. –
Поскольку Heroku использует PostgreSQL, вы можете использовать:
@events = Event.all(:order => "date_part(hour, date) DESC")
Вы будете иметь проблемы развивающихся если вы используете SQLite3 локально и PostgreSQL для развертывания - SQL не согласуется между платформами.
который вы используете? MySQL? –
Я сужу базу данных sqlite3 – Abramodj