Maison >base de données >tutoriel mysql >Comment récupérer des lignes avec des horodatages d'aujourd'hui uniquement en SQL ?
Comment sélectionner des lignes avec des horodatages d'aujourd'hui uniquement
Dans une base de données relationnelle, la sélection de lignes avec des horodatages spécifiques peut être essentielle pour l'analyse des données et rapport. Un scénario courant consiste à récupérer les enregistrements de la journée en cours, à l'exclusion de toute composante temporelle.
L'approche actuelle et ses limites
La requête fournie, SELECT * FROM table WHERE (horodatage > DATE_SUB(now(), INTERVAL 1 DAY));, récupère les résultats des dernières 24 heures. En effet, il soustrait un jour de l'heure actuelle à l'aide de DATE_SUB, qui inclut tous les horodatages du jour précédent.
Utilisation de DATE et CURDATE() pour Precision
Pour sélectionnez les résultats uniquement en fonction de la date, en ignorant la composante temporelle, la requête suivante peut être utilisé :
SELECT * FROM `table` WHERE DATE(`timestamp`) = CURDATE();
Ici, DATE() extrait uniquement la partie date de l'horodatage et CURDATE() renvoie la date actuelle. En comparant ces valeurs, la requête filtre efficacement les horodatages qui ne datent pas d'aujourd'hui.
Utilisation efficace de l'index
Il est important de noter que la requête ci-dessus ne peut pas utiliser d'index. efficacement. Envisagez plutôt d'utiliser cette requête alternative :
SELECT * FROM `table` WHERE `timestamp` >= DATE(NOW()) AND `timestamp` < DATE(NOW()) + INTERVAL 1 DAY;
Cette requête utilise un index sur la colonne d'horodatage, ce qui est une technique d'optimisation courante dans SQL.
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!