Maison >base de données >tutoriel mysql >Comment sélectionner correctement les données entre deux dates dans MySQL ?

Comment sélectionner correctement les données entre deux dates dans MySQL ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-24 16:04:43283parcourir

How to Correctly Select Data Between Two Dates in MySQL?

Sélection de données entre deux dates dans MySQL

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 :

  • Étendez la plage de dates de fin : modifiez la requête pour utiliser la plage suivante :
SELECT `users`.* FROM `users` WHERE created_at >= '2011-12-01' AND created_at <= '2011-12-07'
  • Utilisez DATE_ADD () : Calculez la date de fin en ajoutant un jour à la fin d'origine date :
SELECT `users`.* FROM `users` WHERE created_at >= '2011-12-01' AND created_at <= DATE_ADD('2011-12-01', INTERVAL 7 DAY)
  • Utiliser l'opérateur BETWEEN pour plus de lisibilité :
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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn