Page 1 sur 1

[MySQL 5] Traiter des dates où le jour, mois et année utilis

Posté : 31 juil. 2009, 13:00
par chrislabricole
Bonjour tout le monde :)

Je voudrai tout simplement faire où requête qui à 5 résultats en limite, et décroissant selon la date.
Mais par contre, le jour, le mois, et l'année ont un champ chacun.

Voici la structure de ma table :

Code : Tout sélectionner

CREATE TABLE IF NOT EXISTS `evenements` ( `id` int(10) NOT NULL AUTO_INCREMENT, `jour` int(2) NOT NULL, `mois` int(2) NOT NULL, `annee` int(4) NOT NULL, `titre` varchar(100) CHARACTER SET utf8 NOT NULL, `description` text CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`id`) )
Voici quelques enregistrement pour exemple :

Code : Tout sélectionner

INSERT INTO `evenements` (`id`, `jour`, `mois`, `annee`, `titre`, `description`) VALUES (1, 31, 7, 2009, 'Événement 1', 'Description 1'), (2, 9, 7, 2009, 'Événement 2', 'Description 2'), (3, 31, 6, 2009, 'Événement 3', 'Description 3'), (4, 25, 6, 2009, 'Événement 4', 'Description 4'), (5, 9, 7, 2009, 'Événement 5', 'Description 5');
Sachant que l'ID ne reflète pas toujours la chronologie.

Je ne parviens pas à trouver dans la doc MySQL sur la date la bonne chose qui me permet d'obtenir ma date sous forme de variable au format AAAA-MM-JJ.
Après, d'après mes souvenirs, avec un ORDER BY ... DESC, les dates se rangent automatiquement par chronologie de plus récent au plus ancien.

Merci par avance ! :)

Posté : 31 juil. 2009, 15:59
par enneite
CA devrait le faire ça , non:
select CONCAT(annee,"-",mois,"-",jour) as date_complete from evenements order by annee desc, mois desc, jour desc limit 5

Posté : 31 juil. 2009, 18:25
par chrislabricole
J'ai plutôt cherché du côté des concaténation, et j'ai trouvé ça : :)

Code : Tout sélectionner

SELECT CONCAT_WS("-", annee, mois, jour) AS dateComplete, id, titre, description FROM evenements ORDER BY dateComplete DESC LIMIT 0,5
Ça marche parfaitement !

Merci beaucoup ! :)