Travailler avec INTERVAL et CURDATE dans MySQL pour simplifier les requêtes temporelles
Lorsque vous traitez des données temporelles dans MySQL, il est souvent nécessaire de travailler avec des plages de dates ou des intervalles de temps spécifiques. Les fonctions INTERVAL et CURDATE offrent des moyens puissants de simplifier et de personnaliser vos requêtes.
Par exemple, si vous devez récupérer des données pour une plage de temps spécifique, vous pouvez utiliser la syntaxe suivante :
<code class="sql">WHERE v.date > DATE_SUB(CURDATE(), INTERVAL num MONTH) AND v.date < CURDATE()
Remplacez "num" par le nombre de mois que vous souhaitez remonter dans le temps. Cela ajustera dynamiquement votre requête pour récupérer les données du mois spécifié tout en évitant d'avoir à écrire plusieurs requêtes pour chaque mois.
Dans l'exemple fourni, vous souhaitez récupérer des données pour chaque mois. Pour ce faire, vous pouvez utiliser une boucle pour parcourir les mois :
<code class="sql">FOR i IN REVERSE (1..12) LOOP SELECT s.GSP_nom, DATE_ADD(CURDATE(), INTERVAL - MONTH(i)) AS month, AVG((v.vote + v.prix) / 2) AS avg FROM votes_serveur v JOIN serveur s ON v.idServ = s.idServ WHERE v.date > DATE_ADD(CURDATE(), INTERVAL - MONTH(i)) AND v.date < DATE_ADD(CURDATE(), INTERVAL - MONTH(i-1)) GROUP BY s.GSP_nom ORDER BY avg DESC; END LOOP;</code>
Cette boucle générera une requête pour chacun des 12 mois précédents, vous fournissant les données souhaitées en une seule exécution. En utilisant INTERVAL et CURDATE, vous pouvez rationaliser vos requêtes complexes basées sur le temps, réduisant ainsi le besoin de code répétitif et améliorant l'efficacité de vos opérations de base de données.
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!