0

Я пытаюсь написать какое-либо условие, чтобы вытащить объекты из базы данных:ошибка синтаксиса Postgresql или вблизи «(»

Page.where(published: true).where("`published_at` <= current_date()").where("`publication_end` IS NULL OR `publication_end` > current_date()") 

Когда я введите его в консоли рельсы у меня есть следующая ошибка:

SELECT "pages".* FROM "pages" WHERE "pages"."published" = 't' AND (`published_at` <= current_date()) AND (`publication_end` IS NULL OR `publication_end` > current_date()) 
PG::SyntaxError: ERROR: syntax error at or near "(" 
LINE 1: ...blished" = 't' AND (`published_at` <= current_date()) AND (`... 
                  ^
: SELECT "pages".* FROM "pages" WHERE "pages"."published" = 't' AND (`published_at` <= current_date()) AND (`publication_end` IS NULL OR `publication_end` > current_date()) 
ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR: syntax error at or near "(" 
LINE 1: ...blished" = 't' AND (`published_at` <= current_date()) AND (`... 
                  ^
: SELECT "pages".* FROM "pages" WHERE "pages"."published" = 't' AND (`published_at` <= current_date()) AND (`publication_end` IS NULL OR `publication_end` > current_date()) 

I, м Использование Postgresql Пожалуйста, помогите

+1

Вы просто попробуйте удалить '()' после 'current_date'? – siekfried

+0

'current_date' не имеет завершающего«() », хотя« now() »делает. – bma

+0

Я надеюсь, что эти обратные элементы являются частью синтаксиса ActiveRecord, а не тем, что отправлено Postgres. –

ответ

-1

я пишу:

Page.where(published: true).where("published_at <= current_date").where("publication_end IS NULL OR publication_end > current_date") 

и теперь я ОК

Спасибо :)

2

Удалить скобки:.

# select current_date(); 
ERROR: syntax error at or near "(" 
LINE 1: select current_date(); 

# select current_date; 
    date 
------------ 
2014-02-19 
(1 row) 
+2

В качестве пояснения: 'current_date' - специальное ключевое слово SQL, указанное в стандарте ANSI SQL. Он действует как функция, которая принимает нулевые аргументы, но в отличие от функции ее синтаксис не требует или не позволяет скобок. Еще один пример комитета стандартов SQL, составляющий странный синтаксис для развлечения. –

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