Получить из базы данных, но только последние 30 дней

Я использую этот php для извлечения данных из моей базы данных mysql:

$wpdb->get_var("select count(*) from " . $wpdb->prefix . "newsletter where status='C'"); ?> 

Вы можете заметить, что я в WordPress, поэтому я использую переменную $ wpdb.

Это возвращает все данные из таблицы, где status='C' . Это все работает нормально, но мне нужно получать данные только за последние 30 дней. Я не уверен, что mysql хранит данные о том, когда эта запись была сохранена, но у меня есть другой столбец, created в той же строке, что и status . Это сохраняет дату в следующем формате:

2011-10-14 15:33:58

Есть ли способ использовать это, чтобы обновить мой код, чтобы только восстановить данные за последний месяц?

Все советы здесь очень ценятся.

Спасибо C

В MySQL есть функция adddate (), которую вы можете использовать для этого 🙂

 $wpdb->get_var("select count(*) from " . $wpdb->prefix . "newsletter where status='C' and date_format(created,'%Y%m%d')>date_format(adddate(now(),interval -30 day),'%Y%m%d')"); 

Это на 30 дней назад, но вы можете заменить «интервал -30 дней» на «интервал -1 месяц» или посетить dev.mysql, где все объяснено.

Надеюсь, поможет.

Попробуйте это в своем запросе:

 select count(*) from " . $wpdb->prefix . "newsletter where status='C' AND DATE(created)>=DATE_SUB(CUR_DATE, INTERVAL 30 DAY) 
  $wpdb->get_var("select count(*) from " . $wpdb->prefix . "newsletter where status='C' AND DATEDIFF(CURDATE(), created) <= 30"); ?> 

Используемый:

DATEDIFF () – возвращает expr1 – expr2, выраженное как значение в днях от одной даты к другой. expr1 и expr2 – это выражения даты или даты и времени. В расчетах используются только части даты.

А также:

CURDATE () – Текущая дата