[MySQL 5] Traiter des dates où le jour, mois et année utilisent un champ chacun

Mammouth du PHP | 959 Messages

31 juil. 2009, 13:00

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 ! :)

Eléphant du PHP | 245 Messages

31 juil. 2009, 15:59

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

Mammouth du PHP | 959 Messages

31 juil. 2009, 18:25

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 ! :)