Forum Programmation.SQL Mettre des dates en ordre?

Posté par .
Tags : aucun
0
19
sept.
2006
Bonjour,

Voici mon petit probleme que je n'arrive pas à résoudre.

Sur ma base de donnée je stock des donnée dans un champ varchar sous la forme : 10.2006

Je réutilise ces donnée sur des pages internet et j'aimerai les mettre par odre (grace a la fonction ORDER BY) seulement voila il met les deux premier chiffre en ordre et ne tien pas compte des quatre autre ce qui me donne 09.2007 avant le 10.2006 comment faire pour faire un tri de date.

Merci
  • # champ date

    Posté par (page perso) . Évalué à 5.

    pourquoi ne pas utiliser un champ date ?

    sinon l'utilisation du format classique YYYYMMDD ou YYYY-MM-DD te simplifierait la vie (ou YYYY.MM si cela te suffit....)
  • # Une chaîne pour stocker une date...

    Posté par . Évalué à 3.

    Mauvaise idée, mais si tu n'as pas le choix, tu peux toujours trier sur une sous-chaîne.
    Malheureusement, tu ne nous indique pas quel est le moteur de base de données utilisées, alors ce n'est pas simple de donner une commande qui fonctionnera.
    Sous informix, order by champ[4-6], champ[1-2] fonctionne (de mémoire), sous postgres, order by substr (champ, 4,4),substr(champ, 1,2) fonctionne....
    Sous mysql, je n'en ai aucune idée, etc il existe tant de moteurs de bases de données, et tant d'interprétations des normes SQL, sans parler des "combines" propres à chaque éditeur...
    Alors, voilà, j'espère soit que ce post aura au moins permis de t'aiguiller, soit qu'il t'aura donné envie de nous en dire plus...
    • [^] # Re: Une chaîne pour stocker une date...

      Posté par . Évalué à 1.

      Merci pour cette aide.

      Le systeme fonctionne sur un PC avec windows dessus et le systeme esayphp 1.8 je pense qu'il s'agit de mysql. Comment savoir comment faire? Encore merci a vous
      • [^] # Re: Une chaîne pour stocker une date...

        Posté par . Évalué à 2.

        Comment savoir comment faire?
        il faut revoir la conception qui a été mal faite et utiliser un type date pour stocker des ... dates. (3 qui suivent).
        • [^] # Re: Une chaîne pour stocker une date...

          Posté par . Évalué à 1.

          Ok

          Admetons que je modifie la conception et que je remplace le type varchar par un type date. Comment faire ensuite pour que mes date se classe dans le bonne ordre? Si il n'y a que cette solution je suis preneur, je m'adpetrai avec le reste de mon code.

          Merci d'avance
          PW
          • [^] # Re: Une chaîne pour stocker une date...

            Posté par . Évalué à 1.

            utiliser la clause ORDER BY du sql dans ta requête
            • [^] # Re: Une chaîne pour stocker une date...

              Posté par . Évalué à 2.

              En utilisant un format de date dans MySQL tu pourras en plus utiliser des fonctions existantes pourr travailler directement sur les jours, mois, années, additions, soustractions de dates, etc... ce qui permet souvent d'économiser du code derrière. Cf. DATE(), DAY(), MONTH(), YEAR(), DATEDIFF().
              Et puis de toute façon c'est une bonne habitude à prendre :)

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.