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 :

Convertion de date dans un requete


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 130
    Points : 58
    Points
    58
    Par défaut Convertion de date dans un requete
    Bonjour tout le monde...

    S'il vous plai je me demande si on peut convertir une date du format text au format date dans une requete...
    je voudrai faire un tri de date, mais le champ enregistré dans la base est au format text

    Voici la requete:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT t.*, s.*, u.* 
    FROM total_orders t, sites s, users u
    WHERE t.site_id=s.site_id AND t.user_id=u.user_id
    ORDER BY Date DESC
    je veux convertir le champ Date...

    merci

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 46
    Points : 26
    Points
    26
    Par défaut
    essaie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY CAST(ton_champ AS Date) DESC

  3. #3
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    Ça dépend du format de tes dates... si par exemple le 31 jv 2007 apparaît comme '2007-01-31', le CAST devrait marcher. Sinon, il faut utiliser STR_TO_DATE en précisant le format.
    RTFM : http://dev.mysql.com/doc/refman/5.0/...functions.html
    Antoun
    Expert Tableau, Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 130
    Points : 58
    Points
    58
    Par défaut
    ok, merci pour vos réponses... je vais essayer pourvu que ca marche

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 130
    Points : 58
    Points
    58
    Par défaut
    en fait, je veux faire un tri sur le champ date, et puiske ce champ est sous format text.

    je veux faire quelque chose comme ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT t.*, s.*, u.* 
    FROM total_orders t, sites s, users u
    WHERE t.site_id=s.site_id AND t.user_id=u.user_id
    ORDER BY STR_TO_DATE(Date) DESC
    LIMIT 60
    comment faire?? je souhaite un format anglais.

    merci

  6. #6
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    La question n'est pas ce que tu souhaites mais ce que tu as...
    Antoun
    Expert Tableau, Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  7. #7
    Membre du Club
    Java/.NET
    Inscrit en
    Février 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Java/.NET

    Informations forums :
    Inscription : Février 2005
    Messages : 50
    Points : 48
    Points
    48
    Par défaut
    as tu essaye DATE_FORMAT() ?
    http://dev.mysql.com/doc/refman/5.1/...functions.html
    ainsi tu pourra choisir le format de la date !

  8. #8
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    une date au format texte, ça peut être tout et n'importe quoi : 6/1/2007, 01-06-2007, 6 janvier 07, Jan 6th, etc...

    d'oú ma question répétée : à quoi ressemblent donc tes dates ?
    Antoun
    Expert Tableau, Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  9. #9
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 130
    Points : 58
    Points
    58
    Par défaut
    desolé pour le retard...

    le format de date enregistré est: March 14, 2005 @ 08:53 AM

    donc ce que je veux faire, c'est comparer une date a celle enregistré, si je mets une comparaison simple, le resultat n'est pas bon....

    merci

  10. #10
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    Citation Envoyé par toddy_101

    le format de date enregistré est: March 14, 2005 @ 08:53 AM
    en toute simplicité

    Le @ au milieu a l'air de poser problème, mais tu peux convertir tes dates comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    str_to_date(replace(`date`, '@ ', ''), '%M %d, %Y %h:%i %p')
    Au passage, c'est assez risqué de nommer une colonne date parce que c'est un mot réservé... d'où les `accents graves` que j'utilise.

    Citation Envoyé par toddy_101
    donc ce que je veux faire, c'est comparer une date a celle enregistré, si je mets une comparaison simple, le resultat n'est pas bon....
    fatalement, si c'est du texte, MySQL trie par ordre alphabétique.
    Antoun
    Expert Tableau, Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  11. #11
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 130
    Points : 58
    Points
    58
    Par défaut
    Merci Antoun pour ta réponse...

    j'ai pas bien saisi ce que tu m'a suggéré de mettre...

    Est ce que c'est possible de faire ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT t.*, s.*, u.* 
    FROM total_orders t, sites s, users u
    WHERE t.site_id=s.site_id AND t.user_id=u.user_id AND s.site_id=$site_id
    ORDER BY str_to_date(REPLACE(`Date`, '@ ', ''), '%M %d, %Y %h:%i %p') DESC
    LIMIT 60

  12. #12
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 130
    Points : 58
    Points
    58
    Par défaut
    Aucune idée?

  13. #13
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    Citation Envoyé par toddy_101
    Merci Antoun pour ta réponse...

    j'ai pas bien saisi ce que tu m'a suggéré de mettre...

    Est ce que c'est possible de faire ceci:
    oui

    EDIT : de quelle table vient ta colone date ?
    Antoun
    Expert Tableau, Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  14. #14
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 130
    Points : 58
    Points
    58
    Par défaut
    Je suis vraiment coincé et j'ai besoin de savoir si je peux faire ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT t.*, s.*, u.* 
    FROM total_orders t, sites s, users u
    WHERE t.site_id=s.site_id AND t.user_id=u.user_id AND s.site_id=$site_id
    ORDER BY str_to_date(REPLACE(`Date`, '@ ', ''), '%M %d, %Y %h:%i %p') DESC
    LIMIT 60
    Bon, ca me donne aucun resultat, mais est ce que c'est possible de convertir un champ dans une requete?

    Merci d'avance pour vos réponses

  15. #15
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    Citation Envoyé par toddy_101
    Je suis vraiment coincé et j'ai besoin de savoir si je peux faire ceci:
    oui

    Citation Envoyé par toddy_101
    Bon, ca me donne aucun resultat,
    est-ce que ça en donne si tu enlèves complètement la clause ORDER BY ?
    - si non : le problème doit être là...
    - si oui : ça veut dire qu'il y a une erreur dans mon ORDER BY, récupère le message d'erreur (echo mysql_error() juste après ton mysql_query)
    Citation Envoyé par toddy_101
    mais est ce que c'est possible de convertir un champ dans une requete?
    oui

    et sinon : de quelle table vient ta colonne date ?
    Antoun
    Expert Tableau, Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  16. #16
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 130
    Points : 58
    Points
    58
    Par défaut
    Bonjour Antoun,

    merci pour ta réponse

    Voici l'erreur que je recois:

    You have an error in your SQL syntax near '(REPLACE(`Date`, '@ ', ''), '%M %d, %Y %h:%i %p') DESC LIMIT 60 ' at line 4

  17. #17
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    et pour ma question sur ta colonne Date ?
    Antoun
    Expert Tableau, Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

Discussions similaires

  1. [MySQL] Comparer des info date dans une requete SQL
    Par kaygee dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 06/01/2006, 21h56
  2. [oracle][delphi] Problème format de date dans une requete
    Par le_parrain dans le forum Bases de données
    Réponses: 1
    Dernier message: 21/07/2005, 10h12
  3. ajouter 1 mois à une date dans une requete
    Par alain.lc dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 04/04/2005, 12h05
  4. [SQL] Conditions sur une date dans une requete
    Par poufouille dans le forum Bases de données
    Réponses: 4
    Dernier message: 17/03/2004, 14h25
  5. test la valeur d'une date dans une requete
    Par TuxP dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/01/2004, 14h53

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