IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Requête SQL de tri par date


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 189
    Points : 57
    Points
    57
    Par défaut Requête SQL de tri par date
    Bonjour,

    dans le cas d'un programme, je dois faire un trie par date, mais la date n'a pas le type date mais le type char de ce type:
    15/02/2005 14:53:40

    donc j'aimerai savoir comment on trie sur la date, comment on la convertit en date?

    merci

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Turquie

    Informations forums :
    Inscription : Avril 2005
    Messages : 614
    Points : 502
    Points
    502
    Par défaut
    euhh j'espere pour toi que tu n'a pas ennormément de lignes dans ta table à trier

    enfin je suis pas un pro DBA mais je dirai que là c'est pas faisable en SQL donc il faudra tout transformer en date avec php et faire un trie ensuite, donc si tu as beacoup de ligne çà risque de peser lourd

    je te conseillerai de poser la question dans l'espace SQL du forum plutot qu'ici pour savoir si les pro SQL aurai une solution.

    d'autres solutions ?

  3. #3
    Membre éprouvé
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Points : 984
    Points
    984
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY STR_TO_DATE(col_date, '%d-%m-%Y %k:%i:%s')
    ?

    Et la meilleure solution si tu peux modifier la base :

    - rajouter une colonne de type DATETIME
    - faire un beau gros UPDATE qui convertit
    - supprimer cette horrible colonne

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    Citation Envoyé par Biglo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY STR_TO_DATE(col_date, '%d-%m-%Y %k:%i:%s')
    ?

    Et la meilleure solution si tu peux modifier la base :

    - rajouter une colonne de type DATETIME
    - faire un beau gros UPDATE qui convertit
    - supprimer cette horrible colonne

    +1 memem pa besoin de rajouter une colonne juste changer le type de la colonne non?
    Stay in Bed .. Save Energy

  5. #5
    Membre éprouvé
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Points : 984
    Points
    984
    Par défaut
    Citation Envoyé par boo64
    +1 memem pa besoin de rajouter une colonne juste changer le type de la colonne non?
    Peut-être... il y a moyen de spécifier comment convertir les colonnes, lorsqu'on fait un ALTER ?

    Parce que la conversion ne se fera pas auto vu que ses dates sont en format européen.

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    javais zapé qu'il était en format européen donc le mieu je pense c de fer une nouvelle colonne un script php pouré te le fet dailleur au liue de tapé tout a la main
    Stay in Bed .. Save Energy

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 189
    Points : 57
    Points
    57
    Par défaut Alain15
    C'est quoi la meilleur solution:

    -changer le type de colonne, si oui au format date, timestamps...

    ou bien

    -rajouter une colonne??

    merci de donner votre avis.

    en faite je voudrais faire un order by sur cette colonne (date)

    je vous remercie

  8. #8
    Membre éprouvé
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Points : 984
    Points
    984
    Par défaut
    Citation Envoyé par Alain15
    C'est quoi la meilleur solution:

    -changer le type de colonne, si oui au format date, timestamps...

    ou bien

    -rajouter une colonne??
    Si tu rajoutes une colonne, il faut bien évidemment supprimer l'ancienne, qui sera devenue redondante

    Citation Envoyé par Alain15
    en faite je voudrais faire un order by sur cette colonne (date)
    Je t'ai donné une méthode pour faire un order by sur ta colonne, sans devoir la convertir. L'as-tu essayée ?

    Si tu veux convertir tes dates actuelles dans un format plus propre qui te facilitera les opérations (tri, comparaisons, récupérer le mois, l'année, ...), voilà comment tu peux procéder :

    1. Tu ajoutes la nouvelle colonne avec un type correct (exemple : DATETIME) ==> ALTER TABLE t ADD COLUMN laDate DATETIME NOT NULL

    2. Tu remplis cette nouvelle colonne en convertissant tes anciennes valeurs ==> UPDATE t SET laDate = STR_TO_DATE(ancienne_date, '%d-%m-%Y %k:%i:%s'). Je me suis peut-être trompé dans le format avec les %d, %m, etc. A toi de regarder la documentation officielle pour choisir le format qui convient à tes données actuelles.

    3. Tu vérifies que la conversion s'est bien déroulée, avec un SELECT par exemple.

    4. Tu supprimes l'ancienne colonne ==> ALTER TABLE d DROP COLUMN ancienne_date.


    En faisant une sauvegarde avant toutes ces opérations si tu n'es pas sûr de ton coup

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 189
    Points : 57
    Points
    57
    Par défaut
    j'ai essayé ca order by STR_TO_DATE(date, '%d-%m-%Y %H:%i:%s'). ca marche

    j'ai du juste remplacer k par H

    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête tri par date et somme
    Par Daleira dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 30/01/2014, 16h40
  2. Requête Sql qui regroupe par date
    Par stade13 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 04/02/2013, 17h51
  3. [SQL] Tri par dates
    Par Lolie11 dans le forum Débuter
    Réponses: 5
    Dernier message: 23/01/2009, 00h29
  4. [SQL-VBA]tri par date dans access
    Par Mickey_Mouse dans le forum VBA Access
    Réponses: 5
    Dernier message: 06/02/2007, 09h49
  5. [ XML ][ XSL ] tri par date
    Par zozolh2 dans le forum XMLRAD
    Réponses: 6
    Dernier message: 26/08/2004, 10h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo