MySQL: Regrouper Colonne Timestamp par Mois et Année
Conseil de Stefan Trost | 15/07/2024 à 23:21
Dans les blogs et les forums, nous pouvons souvent voir une liste de liens indiquant en quel mois et en quelle année combien d'articles ont été écrits. Si vous cliquez sur l'un de ces liens, vous obtenez les articles et publications pertinents pour ce mois-ci uniquement.
Mais comment déterminer le nombre d’articles par mois? Enfin, nous avons les articles de notre table MySQL classés chronologiquement avec une colonne TIMESTAMP ou DATE et un "GROUP BY colonne_date" ne renverrait pas le nombre d'articles par mois ou par an mais le nombre de publications par jour spécifique ou même par heure spécifique - et nous ne voulons pas obtenir un tel résultat.
La clé réside dans l'utilisation des fonctions MySQL YEAR() et MONTH(), qui permettent de renvoyer l'année respectivement le mois d'une colonne TIMESTAMP, DATETIME ou DATE, en extrayant cette partie de la date.
Avec cela, notre GROUP BY pourrait ressembler à ceci:
GROUP BY YEAR(dat), MONTH(dat)
Ainsi, nous regroupons la colonne "dat" par année et par mois.
Déterminer le Nombre d'Enregistrements d'une Table par Mois
Examinons un cas d'utilisation spécifique. Voici un exemple de requête SELECT complète:
SELECT COUNT(id), RPAD('0', 2, MONTH(dat)), YEAR(dat) FROM tab GROUP BY YEAR(dat), MONTH(dat);
En conséquence, nous comptons l'ID (ou éventuellement toute autre attribution unique de nos données) et dans la même étape, nous lisons le mois et l'année des publications concernées. Le RPAD garantit que notre mois est lu avec des zéros non significatifs, afin que nous n'ayons pas à formater le nombre par la suite.
Un résultat possible de cette requête pourrait ressembler à ce qui suit:
NOMBRE MOIS ANNÉE 12 01 2024 37 02 2024 83 03 2024 78 04 2024 95 05 2024
Avec PHP, ces nombres peuvent simplement être formatés, afin que nous puissions obtenir une représentation comme "01/2024 (12)", par exemple, ou comme vous le souhaitez. Bien entendu, vous pouvez également ajouter un lien sur chaque ligne, afin que les articles correspondants puissent être affichés.
Déterminer le Nombre d'Enregistrements d'une Table par An
Bien sûr, nous pouvons également structurer notre requête de manière à compter les éléments par an plutôt que par mois. Il suffit de laisser de côté la partie avec le mois pour obtenir cela:
SELECT COUNT(id), YEAR(dat) FROM tab GROUP BY YEAR(dat);
Un résultat possible pourrait alors ressembler à ceci:
NOMBRE ANNÉE 67 2021 39 2022 73 2023 29 2024
Cela pourrait être une bonne idée, par exemple, dans le cas où nous avons un site web avec très peu d'articles et qu'une résolution mensuelle serait donc trop petite.
Sur l’Auteur
Vous pouvez trouver des logiciels de Stefan Trost sur fr.sttmedia.com. Avez-vous besoin d'un logiciel personnalisé selon vos propres besoins? Écrivez-nous: fr.sttmedia.com/contact
Voir Profil
Sujets Connexes
MySQL: Sauts de Ligne dans MySQL
Conseil | 0 Commentaires
Script Batch: Arrêter Ordinateur Windows
Tutoriel | 4 Commentaires
Types de Sujets sur askingbox.com
Article | 0 Commentaires
VirtualBox: Changer la Date et l'Heure
Tutoriel | 10 Commentaires
MySQL: Ajouter une nouvelle Colonne à une Table
Tutoriel | 0 Commentaires
Renommer des Fichiers en ses Noms de Dossier
Tutoriel | 0 Commentaires
Mettre Windows par Script en Mode Veille ou Veille Prolongée
Tutoriel | 0 Commentaires
Avis Important
Veuillez noter: Les contributions publiées sur askingbox.com sont des contributions d’utilisateurs et ne doivent pas remplacer les conseils d’un professionnel. Ils ne sont pas vérifiés par des indépendants et ne reflètent pas nécessairement l’opinion de askingbox.com. Apprendre encore plus.
Participer
Posez votre propre question ou écrivez votre propre article sur askingbox.com. Voici comment.