2013-06-24 2 views
1

Попытка запустить этот запрос:Добавление формата даты FROM_UNIXTIME разбивает запрос

SELECT FROM_UNIXTIME(offers_consumers_history.date, 
        `'%d-%m-%Y')` AS date, 
        COUNT(*) AS COUNT 
FROM (`offers_history`) 
JOIN `offers_consumers_history` ON `offers_consumers_history`.`offer_history_id`=`offers_history`.`id` 
WHERE `offers_history`.`merchant_id` = 1 
    AND `offers_history`.`offer_type_id` = 1 
GROUP BY DATE(FROM_UNIXTIME(offers_consumers_history.date)) 
ORDER BY `offers_consumers_history`.`date` 

Если я запускаю его без формата даты на моем первом FROM_UNIXTIME (% d-% m-% Y часть), все работает нормально, но я явно не получаю отображается формат прямо дата, возвращаемая ошибка:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM (`offers_history`) JOIN `offers_consumers_history` ON `offers_consumers_his' at line 2 

Без формат даты я получаю результаты, такие как:

{"date":"2010-08-18 18:40:00","count":"2"} 

Что я хочу:

{"date":"18-08-2010","count":"2"} 

ответ

1

countreserved word это, вы не можете использовать его в качестве псевдонима, используйте другое имя

'%d-%m-%Y') AS dt, 
COUNT(*) AS cnt 

ИЛИ с кавычку

(offers_consumers_history.date,'%d-%m-%Y') AS `date`, 
COUNT(*) AS `COUNT` 
+1

Вы привели меня к правильному ответу, проблема была в ''% d-% m-% Y ') ', я использую codeigniter и забыл установить для моего второго параметра значение false: http://ellislab.com/codeigniter/user-guide/database/active_record.html#select –

+0

Граф не является зарезервированным словом. Где вы получаете этот материал? – Strawberry

0

Вынуть () из названия таблицы и смените псевдоним имя счета:

SELECT FROM_UNIXTIME(offers_consumers_history.date, 
        '%d-%m-%Y') AS `date`, 
        COUNT(*) AS cnt 
FROM `offers_history` 
JOIN `offers_consumers_history` ON `offers_consumers_history`.`offer_history_id`=`offers_history`.`id` 
WHERE `offers_history`.`merchant_id` = 1 
    AND `offers_history`.`offer_type_id` = 1 
GROUP BY DATE(FROM_UNIXTIME(offers_consumers_history.date)) 
ORDER BY `offers_consumers_history`.`date`