Maison > base de données > tutoriel mysql > Comment obtenir des comparaisons de dates précises avec DATE_FORMAT() dans MySQL ?

Comment obtenir des comparaisons de dates précises avec DATE_FORMAT() dans MySQL ?

Patricia Arquette
Libérer: 2024-10-24 11:21:29
original
532 Les gens l'ont consulté

How to Achieve Accurate Date Comparisons with DATE_FORMAT() in MySQL?

Comparaison de dates MySQL avec DATE_FORMAT()

Dans cet article, nous explorerons comment effectuer des comparaisons de dates dans MySQL à l'aide de DATE_FORMAT() fonction, résolvant un problème spécifique rencontré par un utilisateur lors de la comparaison de dates.

Le problème

L'utilisateur a été confronté à un défi lors de la comparaison de dates à l'aide de DATE_FORMAT(). Les dates ont été stockées au format suivant : '%d-%m-%Y', qui n'est pas un format facile à trier. À l'aide de la requête ci-dessous, l'utilisateur a tenté de comparer les dates :

<code class="sql">SELECT DATE_FORMAT(DATE(starttime), '%d-%m-%Y')
FROM data
WHERE DATE_FORMAT(DATE(starttime), '%d-%m-%Y') >= '02-11-2012';</code>
Copier après la connexion

Cependant, le résultat incluait « 28-10-2012 », ce qui était incorrect selon les attentes de l'utilisateur.

La solution

Le problème se pose parce que nous comparons des chaînes au lieu de dates. DATE_FORMAT() convertit une date en chaîne et les chaînes sont comparées lexicographiquement. Dans ce cas, « 28-10-2012 » est supérieur au « 02-11-2012 » lexicographiquement, même si « 02-11-2012 » est une date ultérieure.

Pour comparer avec précision les dates, nous avons besoin pour les comparer sous forme de dates et non de chaînes. Nous pouvons utiliser la fonction DATE() pour extraire le composant date du champ starttime, puis comparer les dates à l'aide de l'opérateur >=, comme indiqué dans la requête suivante :

<code class="sql">SELECT DATE_FORMAT(DATE(starttime), '%d-%m-%Y')
FROM data
WHERE DATE(starttime) >= DATE('2012-11-02');</code>
Copier après la connexion

Cette requête fonctionnera correctement comparez les dates et excluez « 28-10-2012 » du résultat.

Considération supplémentaire

Il vaut la peine de se demander si l'heure de début du champ DATETIME peut être modifiée en DATE champ. Cela éliminerait le besoin de conversions répétées, améliorant potentiellement les performances.

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal