Classement de dates au formats AAAA-MM-JJ

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Classement de dates au formats AAAA-MM-JJ

par iclo » 24 août 2006, 09:27

Oui, mais comme il explique, il y a certaines dates "imcomplêtes" sans joun, et qui doivent être située à la fin des jours du mois dans la requêtte, d'où la raison d'utilisé une valeur plus élevé que possible pour les jours qui ne sont pas renseigné : >31

par poulé » 24 août 2006, 08:19

Il aura le 31 avant le 1er et je pense qu'il les veut quand même par ordre chronologique.
Il a dit qu'il voulait les dates de la plus proche à la plus éloignée, donc en fait ça dépend si sa base contient des dates passées ou futur à mon avis ;)

par Ryle » 23 août 2006, 19:11

Et si tu utilises ORDER BY mon_champ DESC
Il aura le 31 avant le 1er et je pense qu'il les veut quand même par ordre chronologique. La solution d'Henri me parait la plus simple, mais n'est pas forcément évidente à mettre en place si tu as déjà des données ou si tu prends déjà en compte un peu partout cette histoire de 00-00.

Sinon tu peux utiliser les fonctions YEAR(), MONTH(), DAY() (ou SUBSTRING()) et CASE/WHEN/THEN de mysql pour tester tes dates et créer une colonne de tri. Tu mettrais alors 99 à la place des 00 et ordonnerais ta requête sur ce champ

Code : Tout sélectionner

SELECT ... , CASE MONTH(champ_date) WHEN '00' THEN 99 ELSE MONTH(champ_date) END AS tri FROM table ORDER BY tri
A compléter pour prendre en compte l'année et le jour

par poulé » 23 août 2006, 15:02

Et si tu utilises ORDER BY mon_champ DESC

par Henri » 23 août 2006, 12:40

Si c'est toi qui contrôle ce que tu mets quand il n'y a que l'année, pourquoi tu ne mets pas 2006-99-99 au lieu de 2006-00-00 ?

Comme ça, tes dates arrivent en dernier.

Classement de dates au formats AAAA-MM-JJ

par sunnmagic » 23 août 2006, 10:46

Bonjour à tous,

J'ai une liste d'éléments dans une BDD que je souhaiterai classer par date, de la plus proche à la plus éloignée.

Parfois, le jour et le mois sont inconnus, je ne met dans ce cas que l'année, ex : "2007-00-00".

Comment classer ces dates correctement ? Car un simple "ORDER BY" ne fonctionnet pas correctement, ce qui est normal, puisqu'entre "2006-00-00" et "2006-11-10", il renvoi d'abord "2006-00-00"...

Or, je voudrais que dans le classement apparaissent d'abord les dates complètes (ex : 2006-11-10), puis les dates qui n'ont pas de jour (ex : 2006-11-00), puis les dates qui n'ont que l'année (ex : 2006-00-00)...

Je ne trouve pas... Merci d'avance !!!