Я ищу записи в пользовательской модели. Атрибуты поиска from_date, to_date будут использоваться для поиска записей в пользовательской модели на основе столбца created_at.Rails проблема с летней экономией при поиске
User model : (id, name, created_at)
У меня есть следующие записи в базе данных.
id, name, created_at
1 jd1 2013-09-04 18:01:57
2 jd2 2013-09-05 19:01:57
3 jd3 2013-09-05 23:01:57
Когда я ищу, между "2013-09-04" .to_date (FROM_DATE) и "2013-09-05" .to_date (to_date), только первые две записи возвращаются. Последний не возвращается. Когда я изменяю to_date на «2013-09-06», отображается последняя запись. Это запрос, который я использовал.
date_range = from_date ... to_date + 1.day
scope :by_date, ->(date_range) {where(created_at: date_range)}
User.by_date(date_range)
В чем проблема с запросом? Я думаю, что есть проблема с дневным часовым поясом.
Вы должны CAST столбец created_at как дата, это на самом деле является DateTime;) – MrYoshiji
Что такое производится фактический SQL? Я предполагаю, что вы выполняете преобразования часовых поясов между Rails и вашей базой данных. –
@PhilipHallstrom Он производит следующий sql: SELECT 'users'. * FROM' users' WHERE ('users'.'created_at'> = '2013-09-04' AND' users'.created_at' <'2013-09 -06 ') – Kumar