22 Voix

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.

RépondrePositifNégatif

Sur l’Auteur

AvatarVous 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

Types de Sujets sur askingbox.com

Article | 0 Commentaires

VirtualBox: Changer la Date et l'Heure

Tutoriel | 10 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.