"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi la comparaison de dates MySQL avec date_format donne-t-elle des résultats inattendus ?

Pourquoi la comparaison de dates MySQL avec date_format donne-t-elle des résultats inattendus ?

Publié le 2024-11-12
Parcourir:631

Why Is MySQL Date Comparison with date_format Yielding Unexpected Results?

Comparaison des dates MySQL avec date_format

Malgré plusieurs méthodes de comparaison de dates, un utilisateur a rencontré un résultat inattendu. Ils ont cherché à comparer des dates au format « %d-%m-%Y », mais ont inclus un enregistrement erroné dans le jeu de résultats.

Le problème vient de la comparaison de chaînes au lieu de dates. La fonction date_format convertit les dates en chaînes, rendant la comparaison sensible à l'ordre lexicographique. Par exemple, « 28-10-2012 » est alphabétiquement plus grand que « 02-11-2012 », d'où son inclusion dans le jeu de résultats bien qu'il soit chronologiquement plus ancien.

Pour résoudre ce problème, la comparaison doit être effectuée sur dates au lieu de chaînes. La fonction date peut être utilisée pour extraire le composant date d'un champ DATETIME ou DATE. En comparant les dates extraites, l'ordre chronologique est assuré.

Par exemple :

select date_format(date(starttime),'%d-%m-%Y') from data
where date(starttime) >= date '2012-11-02';

Dans cette requête, date(starttime) extrait la date du champ starttime, qui est ensuite comparée à la date spécifiée en AAAA-MM -Format DD. La fonction date_format est utilisée uniquement pour formater le résultat.

Si starttime est un champ DATETIME, pensez à utiliser :

select date_format(date(starttime),'%d-%m-%Y') from data
where starttime >= '2012-11-02 00:00:00';

Cette requête évite les conversions de date répétées car la comparaison est effectuée directement sur le champ DATETIME.

N'oubliez pas que l'ISO -8601 recommande d'utiliser « AAAA-MM-JJ » comme format de date, mais le code fourni adhère au format « %d-%m-%Y » spécifié par l'utilisateur.

Déclaration de sortie Cet article est réimprimé à l'adresse : 1729739525. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3