【问题标题】:Get from database but only last 30 days从数据库中获取但仅持续 30 天
【发布时间】: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

【问题讨论】:

标签: php mysql date


【解决方案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() - 当前日期

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多