Вопрос Rails & Sqlite - сравнение дат с метками времени в БД - PullRequest
4 голосов
/ 28 июля 2011

Я пытаюсь сделать this : сопоставить общий объем продаж за день с массивом дат для старших графиков (да, мой проект по сути точно такой же, как в примере с Railscast).

Я, к сожалению, просто получаю много нулей; Я считаю, что кусок в моей модели:

def self.total_revenue_on(date)
  where("date(created_at) = ?", date).sum(:amt)
end

не соответствует дате и времени, записанному в моей базе данных, например «2011-07-21 09: 22: 28.388944 + 0000». Уверен, что именно в этом и происходит сбой, потому что, если я вручную удаляю часть часового пояса из своей базы данных (избавляюсь от «+0000» и оставляю просто «2011-07-21 09: 22: 28.388944»), он работает просто отлично.

Я думаю, что это действительно вопрос rails / sqlite: я неправильно храню метку времени или неправильно сравниваю? Любая помощь с благодарностью!

Ответы [ 2 ]

4 голосов
/ 29 июля 2011

Лучше всего использовать to_s (: db) для ссылки на дату и время в базе данных в Rails.Попробуйте:

 def self.total_revenue_on(date)
   where("date(created_at) = ?", date.to_s(:db)).sum(:amt)
 end
1 голос
/ 29 июля 2011

ОК, мне удалось решить эту проблему с помощью другого метода поиска:

def self.total_revenue_on(date)
   where("datetime >= ? and datetime < ?", date, date + 1.day).sum(:amt)
end

Все еще полностью озадачен проблемой с оригиналом, но, похоже, это работает.

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