2015-04-11 5 views
2

Я пытаюсь сделать SELECT * FROM, но только предметы, которым меньше 30 дней. Вот мой выбор код:Как отфильтровать даты MySQL?

SELECT * FROM `{$table_name33}` WHERE `type`='wpst-requiredinfo' ORDER BY `foreignkey` ASC; 

Однако, моя проблема заключается в том, что я не могу понять, как добавить WHERE AND last_updated менее чем за 30 дней.

Я не совсем уверен, как написать запрос, но дата появляется примерно так: 1428412603 в столбце таблицы, это не очень похоже на дату для меня. Я не знаю, с чего начать.

+0

Эта дата в эпоху, http://en.wikipedia.org/wiki/Unix_time – chris85

ответ

4

Попробуйте where пункт:

WHERE `type`='wpst-requiredinfo' and 
     last_updated >= date_sub(now(), interval 30 day) 

EDIT:

Ваша дата, кажется, в формате времени Unix.

WHERE `type`='wpst-requiredinfo' and 
     last_updated >= unixtime_timestamp() - 30*24*60*60 

Примечание: это ставит все функции в текущее время. В частности, он не использует FROM_UNIXTIME(last_updated). Это гарантирует, что для этой части запроса можно использовать индекс. Лучший индекс будет на (type, last_updated).

+0

спасибо за быстрый ответ. я копировал + вставлял это ... он ничего не сломал и ничего не изменил. я перевернулся> и <и попробовал 1 день вместо 30, чтобы быть уверенным, но ничего не изменилось. : -/ –

+0

Весь мой ответ применим только к предложению 'where'. Если вы довольны временем unix, поместите это в 'select'. Если вы хотите получить значение datetime, используйте 'from_unixtime()'. –

+0

ОК, попробовав это ... newb question, does last_updated нужны тики вокруг него со своего имени столбца? а также, когда я читаю его, он говорит, где last_updated больше или равно 30 дням .. правильно? –

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