MySQL-Abfrageoptimierung: Abrufen von Datensätzen innerhalb eines Zeitbereichs
In der vorherigen Diskussion suchte ein Benutzer nach Anleitung zum Abrufen von Datensätzen, die einer Datenbank hinzugefügt wurden innerhalb der letzten 30 Tage, mit der besonderen Anforderung, Datumsangaben im Format MM/TT/JJ anzuzeigen. Bei der ursprünglich bereitgestellten Abfrage ist ein Problem aufgetreten, bei dem die Ergebnisse nicht auf den gewünschten Zeitrahmen beschränkt werden konnten.
Bei der Untersuchung wurde festgestellt, dass das Problem auf die fehlerhafte Platzierung der Funktion DATE_FORMAT zurückzuführen war. Um die gewünschte Filterung zu erreichen, sollte die Funktion in der SELECT-Klausel und nicht in der WHERE-Klausel angewendet werden. Hier ist die korrigierte Abfrage:
SELECT DATE_FORMAT(create_date, '%m/%d/%Y') FROM mytable WHERE create_date BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE()
Außerdem ist es wichtig zu beachten, dass CURDATE() nur den Datumsteil des Zeitstempels zurückgibt. Wenn die Spalte „create_date“ einen DATETIME-Wert mit einer Zeitkomponente ungleich Null enthält, würde die ursprüngliche Abfrage die heutigen Datensätze ausschließen. Um dieses Problem zu beheben, kann stattdessen NOW() verwendet werden:
SELECT DATE_FORMAT(create_date, '%m/%d/%Y') FROM mytable WHERE create_date BETWEEN NOW() - INTERVAL 30 DAY AND NOW()
Mit diesen Korrekturen ruft die Abfrage korrekt Datensätze ab, die den angegebenen Zeitbereichs- und Formatanforderungen entsprechen.
Das obige ist der detaillierte Inhalt vonWie kann ich Datensätze der letzten 30 Tage in MySQL effizient abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!