Heim  >  Artikel  >  Backend-Entwicklung  >  So fragen Sie die Datenbank innerhalb eines bestimmten Zeitraums in PHP ab

So fragen Sie die Datenbank innerhalb eines bestimmten Zeitraums in PHP ab

藏色散人
藏色散人Original
2022-11-04 09:48:561701Durchsuche

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.

So fragen Sie die Datenbank innerhalb eines bestimmten Zeitraums in PHP ab

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:

25396 97EAD217C0533455EECDDE39659ABCDAE9
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.&#39;-&#39;.$month.&#39;-&#39;.$val.&#39; 00:00:00&#39;;
  $max = $year.&#39;-&#39;.$month.&#39;-&#39;.$val.&#39; 23:59:59&#39;;
  $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

Der Code lautet wie folgt:

$month = &#39;04&#39;;
$year = &#39;2017&#39;;
$max_day = cal_days_in_month(CAL_GREGORIAN, $month, $year);   //当月最后一天
$min = $year.&#39;-&#39;.$month.&#39;-01 00:00:00&#39;;
$max = $year.&#39;-&#39;.$month.&#39;-&#39;.$max_day.&#39; 23:59:59&#39;;
$sql = "select t.enterdate,count(*) as total_num,sum(t.total_price) as amount (select date_format(enterdate,&#39;%e&#39;) 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?

Zu diesem Zeitpunkt müssen Sie zunächst die Funktion date_format von MySQL verwenden, um alle Bestellungen des aktuellen Monats in der Unterabfrage herauszufinden, und dann die Funktion date_format verwenden, um das eingegebene Datum in Tage umzuwandeln dann gruppieren nach Statistiken gruppieren. Der Code lautet wie folgt: rrreee

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn