2013-11-21 3 views
2

После перенастройки моих базы данных SQLite в Postgres на сервере разработки, я получаюЭквивалента STRFTIME в Postgres

PG::UndefinedFunction: ERROR: function strftime(unknown, date) does not exist 

Есть ли функция, которую я мог бы использовать, чтобы сохранить функциональность через мое приложение?

Редактировать: попытался использовать to_char, но промахнулся неудачно. В частности, я не понимаю, как его реализовать в конструкции, такой как

def self.query_by_year_month(y, m) 
    where("strftime('%Y', date) = ? and strftime('%m', date) = ?", y, m) 
end 

Спасибо!

ответ

5

Похоже, что это прекрасное время, чтобы начать изучение SQL! Сделал мой метод работы, используя следующий код:

def self.query_by_year_month(y, m) 
    where("extract(year from date) = ? and extract(month from date) = ?", y, m) 
    end 
+1

Это всегда * прекрасное время, чтобы начать изучать SQL! –

+0

С одной стороны, вы, вероятно, получите последовательное сканирование из этого предложения WHERE. С другой стороны, вы узнаете больше SQL! –

3

Ваш лучший выбор может быть to_char().

Один из вариантов заключается в реализации поведения strftime() как определяемой пользователем функции. (Именованный «strftime», конечно.)

+0

Может ли to_char использоваться в слое? –

Смежные вопросы