簡體   English   中英

無法弄清楚如何僅查詢最近30天的MySQL結果

[英]Can't figure out how to query only for last 30 days result in mysql

您好,我有這段代碼來統計表中存儲的所有天數來自不同IP地址的訪問者數量。

$con = mysql_connect("localhost", "root", "root") or die(mysql_error());
mysql_select_db("visitorsCount");
$page = $_GET['page']; //Page users visited with their ip
$queryTest = 'SELECT date, count(*),count(distinct ip) FROM `visitors`  where section=\''.$page.'\' group by date order by date';

$result= mysql_query($queryTest);

    $data = array();
    while($ris=mysql_fetch_row($result))
        {           
           $data[$ris[0]]=$ris[1];      // Render Visitor Count
        } 

    print_r($data);

因此,Print_r為我提供了這個: Array ( [2015-02-03] => 1 [2015-05-03] => 14 )

但是我只想在$queryTest變量中限制最近30天的查詢。 如何限制查詢僅顯示最近30天的記錄? 請查看表結構的sql小提琴。 桌子結構

在過濾器語句中使用BETWEEN進行DATE_SUB() -

SELECT date, count(*),count(distinct ip) FROM `visitors`  where section=\''.$page.'\' AND date BETWEEN DATE_SUB(NOW(), INTERVAL 1 MONTH) AND NOW() group by date order by date

您可以嘗試通過這種方式從‛NOW‛計算‛30 DAY‛間隔

SELECT date, count(*),count(distinct ip) 
FROM `visitors` where date >= DATE(NOW() - 
INTERVAL 30 DAY)  AND date <= NOW() group by date order by 
date;

您還可以在WHERE條件上使用BETWEEN子句。

   $dt=strtotime("-30 days")
   $dt=date("Y-m-d H:i:s",$dt);
   $queryTest = 'SELECT date, count(*),count(distinct ip) FROM `visitors`  where section=\''.$page.'\' AND date>=\'' . $dt . '\' group by date order by date';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM