Je veux créer une requête de statistiques (afficher le nombre d'enregistrements par mois).
Le problème est que je veux que le mois soit affiché sous forme de lettre comme janvier, février, mars, etc. pas comme 1, 2 ou 3. Je n'affiche pas le nom du mois dans l'alphabet en utilisant month(getdate().
Je ne sais pas comment puis-je faire la conversion. Voici ma requête SQL Server:
select count(*) [Total], month(date) [Mois] from user where year(date) >= 2018 group by month(date) order by month(date) desc
3 Réponses :
Vous devriez essayer quelque chose comme ceci
select convert(char(3), [date], 0) select datename(month, [date])
Et DATEPART par souci d'exhaustivité
vous pouvez utiliser
SELECT FORMAT ([Date], 'MMMM') as date
Cela pourrait être une réponse, mais FORMAT n'est pas disponible dans la version inférieure de SQL Server.
J'imagine que la requête que vous souhaitez est:
select year(date), datename(month, date), count(*) as total from user where year(date) >= 2018 group by year(date), datename(month, date) order by min(date);
Remarques:
où suggère que la requête pourrait renvoyer plus d'un an. date dans chaque groupe.
Jetez un œil au fil de discussion - stackoverflow.com/questions/5650830/…
Je voudrais ajouter que, généralement, vous ne voulez même pas utiliser ces fonctions. Vous feriez mieux de sélectionner la date sous forme de date (heure) ou de mois sous forme d'entier ou autre, puis de laisser votre interface utilisateur se charger de la `` convertir '' en un nom de mois convivial. De cette façon, votre application / interface utilisateur peut prendre en charge la localisation plutôt que votre base de données, qui n'a pas le moindre indice sur les préférences de votre utilisateur ou les paramètres de localisation de l'application. Pour le dire autrement, pensez-y comme ceci: et si votre utilisateur préfère le chinois 二月 à février?
@Suraj Kumar: merci pour votre lien, c'est du travail, j'utilise juste le nom de date (mois, date)