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

Comment sélectionner correctement les données MySQL entre deux dates, heure comprise ?

DDD
DDDoriginal
2024-11-19 10:44:03483parcourir

How to Correctly Select MySQL Data Between Two Dates Including Time?

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

Dans MySQL, lorsque vous travaillez avec des champs datetime, il est essentiel d'être conscient des nuances de date formatage. Comme vous l'avez découvert, l'utilisation du format de date « 2011-12-06 10:45:36 » sans tenir compte de l'heure peut conduire à des résultats inattendus lorsque vous essayez de récupérer des données entre des dates spécifiques.

Le Midnight Trap

La version courte par défaut des dates dans MySQL interprète 00:00:00 comme le début d'une journée. Cela signifie que votre requête :

SELECT `users`.* FROM `users` 
WHERE created_at >= '2011-12-01' 
AND created_at <= '2011-12-06'

devenait effectivement :

SELECT `users`.* FROM `users` 
WHERE created_at >= '2011-12-01 00:00:00' 
AND created_at <= '2011-12-06 00:00:00'

En conséquence, l'élément que vous attendiez, '2011-12-06 10:45:36' , a été exclu car sa composante temporelle était en dehors de la plage spécifiée.

Solutions élégantes

Pour résoudre ce problème, vous disposez de plusieurs options :

  • Prolongez la date de fin : Modifiez la requête pour inclure le jour suivant afin de capturer toute la plage :
SELECT `users`.* FROM `users` 
WHERE created_at >= '2011-12-01' 
AND created_at <= '2011-12-07'
  • Utilisez DATE_ADD : Utilisez la fonction DATE_ADD pour ajouter un intervalle à la date de fin :
SELECT `users`.* from `users` 
WHERE created_at >= '2011-12-01' 
AND created_at <= date_add('2011-12-01', INTERVAL 7 DAY)
  • Utilisez l'opérateur BETWEEN : Cet opérateur fournit une manière plus concise de spécifier la plage de dates :
SELECT `users`.* from `users` 
WHERE created_at BETWEEN('2011-12-01', date_add('2011-12-01', INTERVAL 7 DAY));

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