2015-09-14 1 views
5

Мне нужно сформировать запрос в Arel, который ранее выполнял операцию CAST. Исходный запрос был как: выберите * от имя_таблицы, где tablename.anniversary> = CAST (? STR_TO_DATE ('% d-% m-% Y-% k-% i-% s'), как DATETIME)Операция AAST Query CAST

(знак вопроса заменяется фактической датой в дальнейшем коде)

Для где состояние, я делаю это:

where(tablename['anniversary'] 
         .gteq("CAST(STR_TO_DATE(#{date_value},'%d-%m-%Y %k:%i') as DATETIME)")) 

окончательный результирующий запрос, что я должен получить должен иметь: tablename.anniversary> = '2015-07-13 16:12:00'

Бу t Получаю:

tablename.anniversary >= 'CAST(STR_TO_DATE(13-09-2015 05:33PM,\'%d-%m-%Y %k:%i\') as DATETIME)' 

Что я делаю неправильно?

ответ

3

Я не уверен, что понял ваш вопрос, но ...

Во-первых, почему вы не просто использовать рубин datetime formating ?
Но если эта дата является колонка:

Arel::Nodes::NamedFunction.new('CAST', [Model.arel_table[:column_name].as(Arel::Nodes::Quoted.new('DATETIME'))]) 
+0

Arel :: Вершины :: Цитируемые («DATETIME»), кажется, не работает, говорит, что это не определено –

+0

отредактировать его, спасибо. Это Arel :: Nodes :: Quoted.new ('DATETIME'), но если он работает, это зависит от вашей БД. –

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