Heim >Datenbank >MySQL-Tutorial >Warum gibt meine SQLite-Abfrage trotz Verwendung einer BETWEEN-Klausel alle Datumsangaben zurück?
Warum ignoriert die SQLite-Abfrage Datumsbereichsbedingungen?
Problembeschreibung:
Beim Abfragen von Datensätzen innerhalb eines bestimmten Datumsbereichs mithilfe einer SQLite-Datenbank enthalten die Ergebnisse alle Daten, auch Daten außerhalb des angegebenen Bereichs. Die verwendete Abfrageanweisung lautet wie folgt:
<code class="language-sql">SELECT * FROM test WHERE date BETWEEN "11/1/2011" AND "11/8/2011";</code>
Ursache des Problems:
Das Problem ist das Datumsformat. SQLite erfordert Datumsangaben im Format JJJJ-MM-TT (z. B. „2011-11-01“ bis „2011-11-08“). Das in der Abfrage bereitgestellte Datumsformat ist jedoch „MM/TT/JJJJ“.
Beim Ausführen einer Abfrage interpretiert SQLite Datumszeichenfolgen als Text statt als Datum. Daher ignoriert es die Datumsbedingung und ruft alle Zeilen in der „Test“-Tabelle ab, unabhängig vom tatsächlichen Datumswert.
Lösung:
Um dieses Problem zu beheben, konvertieren Sie die Datumszeichenfolge in das Format JJJJ-MM-TT:
<code class="language-sql">SELECT * FROM test WHERE date BETWEEN "2011-11-01" AND "2011-11-08";</code>
Durch die Verwendung des richtigen Datumsformats kann SQLite die Bedingung korrekt auswerten und die Ergebnisse auf Datensätze innerhalb des angegebenen Datumsbereichs beschränken.
Das obige ist der detaillierte Inhalt vonWarum gibt meine SQLite-Abfrage trotz Verwendung einer BETWEEN-Klausel alle Datumsangaben zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!