Я использую этот 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 () – Текущая дата