简体   繁体   中英

Get from database but only last 30 days

I'm using this php to fetch data from my mysql database:

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

You may notice i'm in wordpress so i'm using the $wpdb variable.

This returns all data from the table where status='C' . This is all working fine but I need to only get the data from the past 30 days. I'm not sure if mysql stores data about when this entry was stored but I do have another column called created in the same row as status . This stores the date in the following format:

2011-10-14 15:33:58

Is there any way to use that to update my code to only retreive the data from the past month?

Any advise here is greatly appreciated.

Thanks C

There is adddate() function in MySQL wich you can use for this :)

$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')");

This one is for 30 days back but you can replace the "interval -30 day" with "interval -1 month" or visit dev.mysql where you have all explained.

Hope it helps.

Try this in your query:

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"); ?>

Used:

DATEDIFF() - returns expr1 – expr2 expressed as a value in days from one date to the other. expr1 and expr2 are date or date-and-time expressions. Only the date parts of the values are used in the calculation.

And:

CURDATE() - Current date

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM