Get from database but only last 30 days

后端 未结 3 1385
余生分开走
余生分开走 2020-12-21 22:10

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

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


        
相关标签:
3条回答
  • 2020-12-21 22:55

    Try this in your query:

    select count(*) from " . $wpdb->prefix . "newsletter where status='C' 
    AND DATE(created)>=DATE_SUB(CUR_DATE, INTERVAL 30 DAY)
    
    0 讨论(0)
  • 2020-12-21 23:06
        $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

    0 讨论(0)
  • 2020-12-21 23:07

    There is affffdate() 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(affffdate(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.

    0 讨论(0)
提交回复
热议问题