Comparaison date/heure MySQL : résolution des erreurs de syntaxe et des résultats inexacts
Lorsque vous comparez des dates dans une base de données MySQL, il est important de prendre en compte le type et le format des données pour éviter les erreurs et garantir des résultats précis. Un défi courant consiste à comparer les colonnes DATETIME aux formats de date qui ne contiennent pas de composant temporel.
Question :
Tenter d'utiliser la fonction CONVERT()
pour comparer une colonne DATETIME à un format de date peut entraîner une erreur de syntaxe SQL.
Solution :
Pour résoudre ce problème, envisagez d'utiliser la fonction DATE()
, qui extrait uniquement la partie date de la colonne DATETIME, ou utilisez une fonction de conversion de type de données appropriée pour convertir le champ DATETIME en un type de données date.
Alternative :
1. Utilisez la fonction DATE() :
<code class="language-sql">SELECT * FROM `players` WHERE DATE(us_reg_date) >= '2000-07-05' AND DATE(us_reg_date) < '2011-11-11';</code>
2. Convertir DATETIME en DATE :
<code class="language-sql">SELECT * FROM `players` WHERE STR_TO_DATE(us_reg_date, '%Y-%m-%d') >= '2000-07-05' AND STR_TO_DATE(us_reg_date, '%Y-%m-%d') < '2011-11-11';</code>
3. Utilisez ENTRE et INTERVALLE :
Une alternative consiste à utiliser le BETWEEN
conditionnel et INTERVAL
pour spécifier une plage contenant des dates (sans composant temporel) :
<code class="language-sql">SELECT * FROM `players` WHERE us_reg_date BETWEEN '2000-07-05' AND DATE_ADD('2011-11-10', INTERVAL 1 DAY);</code>
En employant ces stratégies alternatives, vous pouvez comparer efficacement les colonnes DATETIME avec les formats de date tout en évitant les erreurs de syntaxe et en garantissant l'exactitude des comparaisons de dates dans les requêtes MySQL.
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!