Tri sur le MOIS en FRANCAIS après Conversion de Date au Format CHAR(14) en Format DATETIME
Bonjour
Au sein de requêtes diverses en triant par MOIS (peu importe le reste de la requête):
J'ai dans ma base les dates stockées sous le format: (xxxxxx étant les millièmes, centièmes de secondes, etc...)
'YYYYMMDDxxxxxx' => Ex: '20110101000000'
Une fonction Appelée dbo.F_VARCHAR_TO_DATETIME permet de convertir au format date
Si je veux afficher en Majuscule le MOIS je fais:
Code:
SELECT DISTINCT UPPER(DATENAME(MONTH,dbo.F_VARCHAR_TO_DATETIME(MATABLE.MADATE))) FROM MATABLE
Mais si je veux trier par mois et fais:
Code:
1 2
| SELECT DISTINCT UPPER(DATENAME(MONTH,dbo.F_VARCHAR_TO_DATETIME(MATABLE.MADATE))) FROM MATABLE
ORDER BY UPPER(DATENAME(MONTH,dbo.F_VARCHAR_TO_DATETIME(MATABLE.MADATE))) |
CELA NE ME TRIE PAS en JANVIER, FEV,MARS etc... mais dans l'ordre AOUT,AVRIL,DECEMBRE etc, c'est à dire par ordre ALPHABETIQUE
J'imagine qu'il faut faire le tri de la façon suivante:
Code:
1 2
| SELECT DISTINCT UPPER(DATENAME(MONTH,dbo.F_VARCHAR_TO_DATETIME(MATABLE.MADATE)))FROM MATABLE
ORDER BY SUBSTRING(MATABLE.MADATE,5,2) |
Mais j'obtiens le message:
Les éléments ORDER BY doivent se retrouver dans la liste de sélection si SELECT DISTINCT est spécifié.
Si je rajoute au SELECT :
Code:
1 2
| SELECT DISTINCT UPPER(DATENAME(MONTH,dbo.F_VARCHAR_TO_DATETIME(MATABLE.MADATE))),SUBSTRING(MATABLE.MADATE,5,2) FROM MATABLE
ORDER BY SUBSTRING(MATABLE.MADATE,5,2) |
cela me multiplie les lignes...
JANVIER NULL
JANVIER
JANVIER 01
FÉVRIER 02
JANVIER 02
MARS 03
AVRIL 04
MAI 05
JUIN 06
JANVIER 06
JUILLET 07
JANVIER 08
AOÛT 08
SEPTEMBRE 09
JANVIER 09
OCTOBRE 10
NOVEMBRE 11
JANVIER 11
JANVIER 12
DÉCEMBRE 12
JANVIER 50
Que faudrait-il faire?
merci