Rails activerecord: запрос на запись по полю даты и времени? - PullRequest
4 голосов
/ 25 августа 2010

Я пытаюсь запросить записи в таблице TimeSlot по полю start_date с типом datetime. Вот что я попробовал до сих пор, но это не удалось:

TimeSlot.where(:start_date => DateTime.new(2010, 9, 1))

TimeSlot.where(:start_date => DateTime.new(2010, 9, 1).to_s)

TimeSlot.where(:start_date => "2010-09-08")

TimeSlot.where(:start_date => "2010-09-08 00:00:00")

Буду признателен за любую помощь.

Ответы [ 3 ]

1 голос
/ 25 августа 2010

Ваши запросы выглядят хорошо для меня.

Вы уверены, что у вас есть подходящая строка в БД?

Для отладки посмотрите в файле logs / development.log.

Добавлено:

Возможны проблемы с часовыми поясами.Ваш запрос использует часовой пояс вашего сервера.Ваши данные могут храниться в другом часовом поясе.

0 голосов
/ 17 сентября 2015

Ответ от rubyonrails.org

Client.where ("созданный_кат> =: начальная_дата И созданный_кат <=: конечная_дата", {: начальная_дата => параметры [: начальная_дата],: конечная_дата =>params [: end_date]})

или

Client.where ("made_at IN (?)", (params [: start_date] .to_date) .. (params [: end_date] .to_date))

Вот что у меня есть для запроса всех временных интервалов, начинающихся с "2010-09-08", если ваша начальная дата является полем даты.

TimeSlot.where("start_date >= ? AND start_date <= ?", "2010-09-08", "2010-09-08")

Если start_date - это поле даты и времени.

TimeSlot.where("start_date >= ? AND start_date <= ?", "2010-09-08", "2010-09-09")

Поскольку дата и время начинаются с 00: 00: 00

0 голосов
/ 25 августа 2010

Бьюсь об заклад, это тоже часовой пояс.Все в БД автоматически конвертируется в UTC по рельсам.Запросы 1 и 4 должны работать, если нет смещения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...