Вам необходимо использовать форматированную дату MySQL в строке запроса.Попробуйте
SELECT NOW();
, чтобы увидеть, как выглядит дата в формате MySQL.Возможно, вы захотите использовать функцию NOW () непосредственно в своем запросе вместо использования функции PHP time ().
SELECT * FROM table_news WHERE pubdate <= NOW() ORDER BY ...
Функция PHP time () возвращает метку времени Unix (секунды с полуночи 1 января)1970 UTC).Функции MySQL FROM_UNIXTIME () и UNIX_TIMESTAMP () могут использоваться для преобразования из и в метки времени Unix.
Для того, чтобы иметь возможность использовать индекс, необходимо использовать имя столбца, с которым вы сравниваетеи не будет использоваться в функции.То есть
SELECT * FROM table_news WHERE pubdate < FROM_UNIXTIME(1306421037)
может использовать индекс на pubdate, но
SELECT * FROM table_news WHERE unix_timestamp(pubdate) < 1306421037
не может использовать индекс на pubdate, потому что индекс находится на pubdate, а не на unix_timestamp (pubdate) (MySQL не поддерживает функциональные индексы).