2015-02-27 3 views
2

У меня возникла проблема с использованием переменной даты в следующем операторе MySQL. Переменная date содержит строку, которая представляет собой дату.Ruby on Rails .find_by_sql quotes issue

personal = Event.find_by_sql ["SELECT * 
           FROM events 
           WHERE DATE(start) = ? 
            AND HOUR(start) = ? 
            AND user_id = ?;", date, hour, user] 

Ниже приведен результирующий запрос, который запускается в базе данных.

SELECT * 
    FROM events 
WHERE DATE(start) = ''2015-02-27'' 
    AND HOUR(start) = 9 
    AND user_id = 123456789; 

Добавочный набор кавычек добавляется вокруг строки даты, что вызывает ошибку. Есть ли способ избавиться от дополнительной пары котировок?

+1

Обратите внимание, что при вводе запросов в интерактивной среде требуется использовать только двоеточие, и их следует опускать при использовании интерфейса запроса. Какую ценность содержит «дата»? – tadman

+0

Имеет ли 'date' кавычки в строке? '" '2015-02-27' "' – messanjah

+0

Какой тип столбца 'start'? – messanjah

ответ

0

Вы пытались использовать where?

personal = Event.where("DATE(start) = ?", date.to_date). 
    where("HOUR(start) = ?", hour). 
    where(user_id: user) 
+0

Да, к сожалению, он возвращает точные результаты. –

+0

Даже если вы сначала проанализируете «дату» на дату, используя 'to_date'? – messanjah

+0

Да, извините, что исправляет проблему наличия дополнительной пары котировок, однако мне нужно сравнить только дату в столбце datetime, это послужило основанием для использования WHERE DATE (start) =?. –