2012-03-08 78 views
1

我使用这个PHP从我的MySQL数据库提取数据:但只有最近30天

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

您可能会注意到我在WordPress的所以我使用了$变量WPDB。

这将返回表中的所有数据,其中status='C'。这一切都正常工作,但我只需要从过去30天获取数据。我不确定mysql是否存储有关何时存储该条目的数据,但我确实在status的同一行中有另一个名为created的列。该文件存储在以下格式的日期:

2011-10-14 15:33:58

有没有办法用它来更新我的代码只从过去一个月retreive的数据?

任何意见在这里是不胜感激。

感谢ç

+0

你可能会首先搜索前问当前日期。这个如何:http://stackoverflow.com/questions/2041575/mysql-query-records-between-today-and-last-30-days – 2012-03-08 11:27:55

回答

2

有在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你已经全部解释。

希望它有帮助。

+0

谢谢..作品完美。 – Cybercampbell 2012-03-08 11:40:45

+0

很高兴帮助,谢谢:) – FeRtoll 2012-03-08 11:42:08

2

在查询试试这个:

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

使用:

DATEDIFF() - 返回表达式1 - 表达式2表示为从 一个日期到另一天的值。 expr1和expr2是日期或日期和时间 表达式。只有日期部分的值用于计算 。

和:

CURDATE() -

相关问题