Получить из базы данных, но только за последние 30 дней - PullRequest
1 голос
/ 08 марта 2012

Я использую этот 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

Ответы [ 3 ]

2 голосов
/ 08 марта 2012

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

select count(*) from " . $wpdb->prefix . "newsletter where status='C' 
AND DATE(created)>=DATE_SUB(CUR_DATE, INTERVAL 30 DAY)
2 голосов
/ 08 марта 2012

В 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 , где вы все объяснили.

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

1 голос
/ 08 марта 2012
    $wpdb->get_var("select count(*) from " . $wpdb->prefix . "newsletter where status='C'
 AND DATEDIFF(CURDATE(), created) <= 30"); ?>

Используется:

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

И:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...