Pourquoi la requête SQLite ignore-t-elle les conditions de plage de dates ?
Description du problème :
Lors de l'interrogation d'enregistrements dans une plage de dates spécifique à l'aide d'une base de données SQLite, les résultats contiennent toutes les dates, même les dates en dehors de la plage spécifiée. L'instruction de requête utilisée est la suivante :
<code class="language-sql">SELECT * FROM test WHERE date BETWEEN "11/1/2011" AND "11/8/2011";</code>
Cause du problème :
Le problème est le format de la date. SQLite nécessite des dates au format AAAA-MM-JJ (par exemple, « 2011-11-01 » à « 2011-11-08 »). Cependant, le format de date fourni dans la requête est « MM/JJ/AAAA ».
Lors de l'exécution d'une requête, SQLite interprète les chaînes de date comme du texte au lieu de dates. Par conséquent, il ignore la condition de date et récupère toutes les lignes de la table « test » quelle que soit la valeur réelle de la date.
Solution :
Pour résoudre ce problème, convertissez la chaîne de date au format AAAA-MM-JJ :
<code class="language-sql">SELECT * FROM test WHERE date BETWEEN "2011-11-01" AND "2011-11-08";</code>
En utilisant le format de date correct, SQLite peut évaluer correctement la condition et limiter les résultats aux enregistrements dans la plage de dates spécifiée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!