Lorsque vous travaillez avec des données de date et d'heure dans MySQL, il est courant de devoir sélectionner des données qui se situent dans une plage de dates spécifique. . Cependant, lorsque vous utilisez la colonne create_at comme valeur datetime, l'interprétation par défaut est minuit pour les dates courtes.
Problème :
Vous pouvez rencontrer une situation où une requête comme ce qui suit ne renvoie pas de ligne, même si l'horodatage create_at de la ligne tombe dans la date spécifiée range:
SELECT `users`.* FROM `users` WHERE created_at >= '2011-12-01' AND created_at <= '2011-12-06'
Solution:
Le problème est que la requête sélectionne en fait des données avec une plage allant du '2011-12-01 00:00:00 ' à '06/12/2011 00:00:00'. Pour résoudre ce problème, il existe plusieurs approches :
SELECT `users`.* FROM `users` WHERE created_at >= '2011-12-01' AND created_at <= '2011-12-07'
SELECT `users`.* FROM `users` WHERE created_at >= '2011-12-01' AND created_at <= DATE_ADD('2011-12-01', INTERVAL 7 DAY)
SELECT `users`.* FROM `users` WHERE created_at BETWEEN('2011-12-01', DATE_ADD('2011-12-01', INTERVAL 7 DAY))
L'utilisation de l'une de ces approches sélectionnera correctement les données qui correspondent à la plage spécifiée plage de dates, y compris les lignes avec des horodatages créés_at tels que « 2011-12-06 10:45:36'.
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!