从数据库中获取但仅持续 30 天
Posted
技术标签:
【中文标题】从数据库中获取但仅持续 30 天【英文标题】:Get from database but only last 30 days 【发布时间】:2012-03-25 21:20:40 【问题描述】:我正在使用这个 php 从我的 mysql 数据库中获取数据:
$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
有什么方法可以使用它来更新我的代码以仅检索过去一个月的数据?
非常感谢这里的任何建议。
谢谢C
【问题讨论】:
您可以先搜索再询问。这个怎么样:***.com/questions/2041575/… 【参考方案1】: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。
希望对你有帮助。
【讨论】:
【参考方案2】:在您的查询中试试这个:
select count(*) from " . $wpdb->prefix . "newsletter where status='C'
AND DATE(created)>=DATE_SUB(CUR_DATE, INTERVAL 30 DAY)
【讨论】:
【参考方案3】: $wpdb->get_var("select count(*) from " . $wpdb->prefix . "newsletter where status='C'
AND DATEDIFF(CURDATE(), created) <= 30"); ?>
使用:
DATEDIFF() - 返回 expr1 – expr2 以天数表示的值 一个约会到另一个。 expr1 和 expr2 是日期或日期和时间 表达式。只有值的日期部分用于 计算。
还有:
CURDATE() - 当前日期
【讨论】:
以上是关于从数据库中获取但仅持续 30 天的主要内容,如果未能解决你的问题,请参考以下文章
如何有效地从 Firebase 实时数据库中获取 7 天、30 天的摘要?
《30天吃掉那只 TensorFlow2.0》 1-4 时间序列数据建模流程范例 (国内新冠疫情结束时间预测问题)