Помогите перевести запрос Rails Sqlite на postgresql - PullRequest
2 голосов
/ 01 августа 2011

Я использую следующий код, чтобы помочь найти продажи за текущий месяц.Моя разработка баз данных SQLite, но я использую Heroku для производства, который использует PostgreSQL.Таким образом, я получаю функцию strftime не существует ошибки.Как бы я перевел это, и есть ли способ перевести это так, чтобы оно все еще работало при запросе моей базы данных dev SQLite?

sales = current_user.location.sales.find( :all,
                                          :conditions => ["strftime('%Y', date) = '?'
                                                          AND strftime('%m', date) = ?",
                                                          Date.today.year,
                                                          Date.today.strftime('%m')],
                                                          :order => "date")

Ответы [ 3 ]

4 голосов
/ 01 августа 2011

Postgres не поддерживает strftime.Вы можете найти список поддерживаемых функций даты / времени здесь .

sales = current_user.location.sales.find( :all,
                                          :conditions => ["extract(year from date) = '?'
                                                          AND extract(month from date) = ?",
                                                          Date.today.year,
                                                          Date.today.strftime('%m')],
                                                          :order => "date")
1 голос
/ 01 августа 2011

Если вы пытаетесь получить данные о продажах за текущий месяц, это может быть более подходящий, независимый от базы данных запрос.

current_user.location.sales.where (: date => (Time.now.beginning_of_month..Time.now)). Order ("date")

1 голос
/ 01 августа 2011

Я думаю, to_timestamp или to_char - это аналогичные функции Postgres, на которые вы хотите взглянуть. Документы довольно просты; в основном аналогичен strftime с различными шаблонами шаблонов: Функции форматирования типов данных Postgres

Может быть, больше, чем вам интересно, но я бы действительно рекомендовал запускать Postgres локально, если вы много работаете с Heroku. Это избавит вас от боли в будущем.

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