У меня возникли проблемы с сопоставлением дат в именованной области. Я пытаюсь определить, является ли событие текущим в зависимости от даты начала и окончания. Вот именованная область, в которой я использую то, какие работы, но не для событий, имеющих одну и ту же дату начала и окончания.сравнение дат в Rails
named_scope :date_current, :conditions => ["Date(start_date) <= ? AND Date(end_date) >= ?", Time.now, Time.now]
Это возвращает следующую запись, хотя он должен вернуть две записи, а не один ...
>> Event.date_current
=> [#<Event id: 2161, start_date: "2010-02-15 00:00:00", end_date: "2010-02-21 00:00:00", ...]
Что это не возвращение это так
>> Event.find(:last)
=> #<Event id: 2671, start_date: "2010-02-16 00:00:00", end_date: "2010-02-16 00:00:00", ...>
Время сервера похоже, находится в UTC, и я полагаю, что записи хранятся в БД в UTC. Любые идеи относительно того, что я делаю неправильно или что попробовать?
Спасибо!
Привет Ларри К. То, что я нашел вчера, что второе событие, один, что я хотел показать DID-шоу для большинства дня и появился больше не будет тока после времени UTC прошло. Например, начиная с 8 вечера по EST, мероприятие больше не было актуальным, но в 5 вечера по восточному стандартному времени это заставляло меня думать, что это проблема часового пояса. Вот результат из журнала разработки для запроса на моем локальном компьютере: SELECT * FROM 'events' WHERE ((Date (start_date) <= '2010-02-17 10:14:10' AND Date (end_date)> = '2010-02-17 10:14:10') AND (events.deleted_at IS NULL ИЛИ events.deleted_at> '2010-02-17 15:14:50')) – aressidi
Я обновил дату_current named_scope, чтобы посмотреть вот так: named_scope: date_current,: conditions => ["Date (start_date) <=? AND Date (end_date)> =?", Time.now.in_time_zone ("UTC"). to_date.to_s, Time. now.in_time_zone ("UTC"). to_date.to_s В журнале появляется следующее: SELECT * FROM 'events' WHERE ((Date (start_date) <= '2010-02-17' AND Date (end_date)> = '2010-02-17') AND (events.deleted_at IS NULL OR events.deleted_at> '2010-02-17 15:22:44')) Возможно, для этого времени часовой пояс должен быть +5 часов вместо -5 часов ... – aressidi