Sélection des enregistrements entre aujourd'hui et les 30 derniers jours dans MySQL
Dans MySQL, vous pouvez récupérer les enregistrements qui se situent dans une plage de dates spécifiée en utilisant une requête comme la suivante :
SELECT * FROM table_name WHERE date_column BETWEEN start_date AND end_date
Cependant, lorsqu'ils tentent de limiter les résultats aux 30 jours précédents, les utilisateurs peuvent rencontrer des problèmes où la requête renvoie tous les enregistrements à la place. Pour résoudre ce problème, il est crucial de comprendre la syntaxe de formatage de date appropriée.
Dans la requête fournie :
create_date between DATE_FORMAT(curdate(),'%m/%d/%Y') AND (DATE_FORMAT(curdate() - interval 30 day,'%m/%d/%Y'))
La fonction DATE_FORMAT est utilisée de manière incorrecte dans la clause WHERE. Cette fonction doit être appliquée dans la clause SELECT pour formater les dates récupérées à des fins d'affichage :
SELECT DATE_FORMAT(create_date, '%m/%d/%Y') AS formatted_date FROM table_name WHERE create_date BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE()
De plus, il est important de prendre en compte le type de données de la colonne create_date. S'il est stocké sous la forme DATETIME avec une composante temporelle non nulle, la requête ci-dessus ne sélectionnera pas avec précision les enregistrements du jour. Dans de tels cas, utilisez plutôt NOW() :
SELECT DATE_FORMAT(create_date, '%m/%d/%Y') AS formatted_date FROM table_name WHERE create_date BETWEEN NOW() - INTERVAL 30 DAY AND NOW()
En appliquant ces corrections, la requête récupérera correctement les enregistrements créés dans la plage de 30 jours spécifiée, formatés dans le « mm/jj/aa » souhaité. format.
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!