Heim > Artikel > Backend-Entwicklung > So fragen Sie die Datenbank innerhalb eines bestimmten Zeitraums in PHP ab
So fragen Sie die Datenbank innerhalb eines Zeitraums in PHP ab: 1. Verwenden Sie die Funktion „date_format“ von MySQL, um zunächst alle Bestellungen des aktuellen Monats in der Unterabfrage herauszufinden. 2. Verwenden Sie zum Konvertieren die Funktion „date_format“. Geben Sie das Datum in Tage ein. 3. Nach Tag. Gruppieren Sie einfach die Statistiken.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP-Version 8.1, Dell G3-Computer.
Wie frage ich die Datenbank innerhalb eines bestimmten Zeitraums in PHP ab?
PHP+MySQL implementiert statistische Optimierungsoperationsbeispiele für tägliche Daten über einen bestimmten Zeitraum.
In Internetprojekten ist die Datenanalyse des Projekts von wesentlicher Bedeutung. Normalerweise wird der Trend der gesamten täglichen Datenänderungen innerhalb eines bestimmten Zeitraums berechnet, um die Marketingstrategie anzupassen. Schauen wir uns die folgenden Fälle an.
Fall
Normalerweise gibt es in der E-Commerce-Plattform ein Bestellformular, um alle Bestellinformationen zu erfassen. Jetzt müssen wir die Anzahl der Bestellungen und den Umsatz pro Tag in einem bestimmten Monat zählen, um das folgende statistische Diagramm für die Datenanalyse zu zeichnen.
Die Datenstruktur der Bestelltabelle ist wie folgt:
order_id | order_sn | total_price | enterdate |
---|---|---|---|
17.90 | 2017-04-01 22:15:18 | ||
25398 | 032E6941DAD44F29651B53C41F6B48A0 | 163.03 | 2017-04-02 07:24:36 |
Fragen Sie die Anzahl der jeweils aufgegebenen Bestellungen ab Tag des Monats, wie soll der Gesamtbetrag berechnet werden?
Allgemeine Methode
Die erste und einfachste Möglichkeit besteht darin, die PHP-Funktion cal_days_in_month()
zu verwenden, um die Anzahl der Tage im Monat abzurufen und dann ein Array davon zu erstellen Alle Tage im Monat, und dann in einer Schleife abfragen Die Gesamtzahl jedes Tages, erstellen Sie ein neues Array. cal_days_in_month()
获取当月天数,然后构造一个当月所有天的数组,然后在循环中查询每天的总数,构造新数组。
代码如下:
$month = '04'; $year = '2017'; $max_day = cal_days_in_month(CAL_GREGORIAN, $month, $year); //当月最后一天 //构造每天的数组 $days_arr = array(); for($i=1;$i<=$max_day;$i++){ array_push($days_arr, $i); } $return = array(); //查询 foreach ($days_arr as $val){ $min = $year.'-'.$month.'-'.$val.' 00:00:00'; $max = $year.'-'.$month.'-'.$val.' 23:59:59'; $sql = "select count(*) as total_num,sum(`total_price`) as amount from `orders` where `enterdate` >= {$min} and `enterdate` <= {$max}"; $return[] = mysqli_query($sql); } return $return;
这个sql简单,但是每次需要进行30次查询请,严重拖慢响应时间。
优化
如何使用一个sql直接查询出各天的数量总计呢?
此时需要利用 mysql 的 date_format
函数,在子查询中先查出当月所有订单,并将 enterdate 用 date_format 函数转换为 天 ,然后按天 group by
$month = '04'; $year = '2017'; $max_day = cal_days_in_month(CAL_GREGORIAN, $month, $year); //当月最后一天 $min = $year.'-'.$month.'-01 00:00:00'; $max = $year.'-'.$month.'-'.$max_day.' 23:59:59'; $sql = "select t.enterdate,count(*) as total_num,sum(t.total_price) as amount (select date_format(enterdate,'%e') as enterdate,total_price from orders where enterdate between {$min} and {$max}) t group by t.enterdate order by t.enterdate"; $return = mysqli_query($sql);Dieses SQL ist einfach, erfordert jedoch jedes Mal 30 Abfragen, was die Antwortzeit erheblich verlangsamt.
Optimierung Wie verwende ich SQL, um die Gesamtmenge jedes Tages direkt abzufragen? Auf diese Weise wird die Antwortzeit erheblich verbessert, indem 30 Abfragen auf 1 reduziert werden. 🎜🎜🎜Hinweis: 🎜🎜🎜1. Da alle Daten des aktuellen Monats abgefragt werden müssen, sollte diese Methode nicht angewendet werden, wenn die Datenmenge zu groß ist. 🎜🎜2. Um Datenverluste durch fehlende Daten an diesem Tag zu vermeiden, sollten die Daten nach der Abfrage bedarfsgerecht verarbeitet werden. 🎜🎜Empfohlenes Lernen: „🎜PHP-Video-Tutorial🎜“🎜
Das obige ist der detaillierte Inhalt vonSo fragen Sie die Datenbank innerhalb eines bestimmten Zeitraums in PHP ab. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!