Classement de dates au formats AAAA-MM-JJ

sunnmagic
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 284
Inscription: 14 Juin 2005

Classement de dates au formats AAAA-MM-JJ

Message le Mer Aoû 23, 2006 9: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 !!!


mowmow
WRInaute impliqué
WRInaute impliqué
 
Messages: 975
Inscription: 3 Nov 2004

Message le Mer Aoû 23, 2006 9:50

Tiens un sunmagic ! :D Décidemment on se croise (TK_Elitetom sur JV.com).

Tes champs sont ils de type DATETIME ? Normalement un order by devrait marcher si je ne me trompe pas...

sunnmagic
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 284
Inscription: 14 Juin 2005

Message le Mer Aoû 23, 2006 9:53

Salut ;)

Non, ils sont au format DATE seulement, et l'ORDER BY classe les dates du type "2006-00-00" avant "2006-11-15" par exemple...


obi
WRInaute discret
WRInaute discret
 
Messages: 238
Inscription: 26 Juil 2006

Message le Mer Aoû 23, 2006 9:58

Et si tu mettais 2006-99-99 à la place de 2006-00-00, ça marcherait ?

sunnmagic
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 284
Inscription: 14 Juin 2005

Message le Mer Aoû 23, 2006 9:59

En bidouillant, oui, cela marcherait certainement, mais j'aimerai éviter d'avoir à le faire :p


obi
WRInaute discret
WRInaute discret
 
Messages: 238
Inscription: 26 Juil 2006

Message le Mer Aoû 23, 2006 10:11

T'as pas trop le choix je dirais...
A moins d'ajouter un champ fuzzy_date qui vaudrait 1 pour toutes les dates de la forme 2006-00-00, du coup, tu peux préciser
Code: Tout sélectionner
ORDER by fuzzy_date, date

Il commence par trier sur le critère fuzzy date, donc te met toutes tes dates pourries à lafin, puis pour ceussent qui ont le même fuzzy date, par date. Et ça marche !

jarreweb
WRInaute discret
WRInaute discret
 
Messages: 192
Inscription: 12 Sep 2003

Message le Mer Aoû 23, 2006 10:13

pour eviter d'avoir des dates qui n'existent pas (2006-00-00), utiliser d'abord la fonction checkdate()
sinon tu peux tenter un
ORDER BY madate>'2006-00-00', madate ASC

sunnmagic
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 284
Inscription: 14 Juin 2005

Message le Mer Aoû 23, 2006 10:20

Je vais tester tout ca, merci ;)

jarreweb > Je n'ai pas bien compris où je devais inclure le checkdate() ?


obi
WRInaute discret
WRInaute discret
 
Messages: 238
Inscription: 26 Juil 2006

Message le Mer Aoû 23, 2006 10:20

Correction, j'avais mal lu ton message initial.
Il te faut 2 champs supplémentaires: no_month et no_day
et tu fais un
Code: Tout sélectionner
ORDER by no_month, no_day, date

sunnmagic
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 284
Inscription: 14 Juin 2005

Message le Mer Aoû 23, 2006 10:35

Merci ! Je viens de tester : on progresse, mais ce n'est pas encore ca...

En effet, une date comme le "2007-03-30" passe avant "2006-11-00", par exemple...

sunnmagic
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 284
Inscription: 14 Juin 2005

Message le Mer Aoû 23, 2006 10:48

La bidouille des "99" n'est pas bête, je vais tester ca ;)


Edit : Bingo ! Ca marche :p

Merci à vous :D

jarreweb
WRInaute discret
WRInaute discret
 
Messages: 192
Inscription: 12 Sep 2003

Message le Mer Aoû 23, 2006 12:21

il faut utiliser checkdate() avant d'insérer la date
pour vérifier sur la date à insérer est valide ou pas

petit-ourson
WRInaute impliqué
WRInaute impliqué
 
Messages: 855
Inscription: 31 Mai 2004

Message le Mer Aoû 23, 2006 14:18

Si ce n'est pas abérant d'avoir un champ date (au format date) avec des dates qui ne sont pas des dates ....

sunnmagic
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 284
Inscription: 14 Juin 2005

Message le Mer Aoû 23, 2006 14:44

J'ai mes raisons ;)

petit-ourson
WRInaute impliqué
WRInaute impliqué
 
Messages: 855
Inscription: 31 Mai 2004

Message le Mer Aoû 23, 2006 14:52

Avec ou sans raisons cela reste abérant. Conceptuellement, j'aimerai bien comprendre comment tu es arrivé à ce résultat là.

Classement de dates au formats AAAA-MM-JJ

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google Alternate Views

  • Logiciel d'analyse du positionnement
    AgentWebRanking est un logiciel professionnel qui permet d'analyser le positionnement d'un ou plusieurs sites dans plus de 300 moteurs de recherche dans le monde. Vous pouvez ainsi analyser les performances du référencement pour de nombreux mots-clés.
  • Trouver la position de son site dans Google
    Cet outil vous permet de vérifier si une ou plusieurs page(s) de votre site arrive(nt) dans les premiers résultats de Google, pour certains mots-clés recherchés.
  • Trouver la position de son site dans Yahoo
    Cet outil vous permet de vérifier si une ou plusieurs page(s) de votre site arrive(nt) dans les premiers résultats de Yahoo, pour certains mots-clés recherchés.


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité