2013-12-18 3 views
-1

Я пытаюсь создать запрос, который покажет мне только «статьи», которые ниже даты публикации. Например, я, возможно, есть статья, которая имеет дату публикации завтрашнего дня, это запрос я сделал, но, кажется, не работать правильно:Ошибка SQL Query (сравнение даты)

SELECT a.id, CASE WHEN a.created_by_alias > ' ' THEN a.created_by_alias ELSE ua.name  END AS author 
FROM #__content AS a 
LEFT JOIN #__users AS ua ON ua.id = a.created_by 
LEFT JOIN #__categories AS c ON c.id = a.catid 
WHERE a.state='1' 
AND c.id!=1618 
AND a.publish_up >= NOW() 
AND a.title LIKE '%Europa no es una broma%' 

Дата publish_up возвращается, как это: 2013-12- 19 20:55:00 и сегодняшняя дата, которая будет теперь(), возвращается так же: 2013-12-18 09:31:30 (оба формата).

Что я хочу, это только те статьи, которые ниже сегодняшней даты.

Заранее благодарим за вашу помощь!

+2

Что тип столбца для 'publish_up'? Я также не понимаю, что вы подразумеваете под «ниже даты публикации» ... хотите ли вы опубликовать опубликованные или еще не опубликованные статьи из вашего запроса? –

+0

Это не очень хороший вопрос, потому что он не описывает точную проблему. Структура таблицы, данные примера, ожидаемые результаты на основе этих данных, текущие результаты, сообщения об ошибках, если они есть ... – GolezTrol

+0

Извините за то, что я не закончил эту информацию, я отредактировал вопрос, надеюсь, что это получится лучше. – MONZTAAA

ответ

1

Попробуйте

SELECT a.id, CASE WHEN a.created_by_alias > ' ' THEN a.created_by_alias ELSE ua.name  END AS author 
FROM #__content AS a 
LEFT JOIN #__users AS ua ON ua.id = a.created_by 
LEFT JOIN #__categories AS c ON c.id = a.catid 
WHERE a.state='1' 
AND c.id!=1618 
AND DATE(a.publish_up) < Date(NOW()) 
AND a.title LIKE '%Europa no es una broma%' 

Воспользоваться DATE() функция, которая возвращает значение даты yyyy-mm-dd