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 :

Probleme de conversion de date


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 52
    Points : 31
    Points
    31
    Par défaut Probleme de conversion de date
    Bonjour,

    Malgré les nombreuses docs que j'ai pu lire sur le sujet, je n'arrive pas à mettre en exercice la conversion d'une date enregistrée en varchar vers un véritable type datetime.

    En effet, suite à un import depuis un CSV, un champ de ma table est défini en varchar(20) et j'y trouve des dates au format suivant: dd/mm/yyy hh:mm:ss
    Je voudrais simplement changer la structure de ma table afin de passer ce champ en type datetime mais je n'arrive pas à trouver le moyen de le faire.
    J'ai essayé par CAST et CONVERT mais j'ai du mal m'y prendre car soldé à chaque fois par des erreurs

    Quelqu'un pourrait il m'aider sur le sujet?

  2. #2
    Nouveau membre du Club
    Inscrit en
    Mars 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 52
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par asmduty Voir le message
    Bonjour,

    je ne suis pas un spécialiste sur le sujet, mais si vous ne trouvez rien de "tout prêt", vous pouvez créer votre fonction de conversion avec des "substring"

    Il y a peut être possibilité de le faire avec une expression régulière, ce qui serait plus propre, mais je ne suis pas un grand connaisseur sur ce sujet.
    Dans ce cours, la partie découpage de chaîne doit permettre de faire ce que vous souhaitez : http://lgmorand.developpez.com/dotnet/regex/
    J'ai essayé avec le substring mais j'ai du me louper à cause des espaces je pense.
    Par ailleurs, je n'ai pas de connaissance en .NET , c'est pour cela que je souhaite tout faire directement en SQL si c'est faisable...

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Sur SQL-Server c'est la fonction CONVERT en effet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select convert(datetime, '12/03/2012 11:02:00', 103)

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mars 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 52
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Sur SQL-Server c'est la fonction CONVERT en effet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select convert(datetime, '12/03/2012 11:02:00', 103)
    ahh!! je pensais que je ne pouvais pas utiliser le 103 à cause de la présence de l'heure...
    Du coup, je dois lancer quelle requête au final pour convertir tous mes enregistrements? je dois passer par la création d'un nouveau champ temporaire?
    En fait, je voudrais passer une seule fois sur toute ma table pour modifier le type de mon champ et du coup modifier tous mes enregistrements au bon format...

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Le SGBD a l'air de s'en sortir assez bien tout seul :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    create table toto (c1 varchar(20))
     
    insert into toto (c1) values ('12/03/2012 11:02:00')
     
    select c1 from toto
     
    c1
    --------------------
    12/03/2012 11:02:00
     
     
    set dateformat dmy
     
    alter table toto
    alter column c1 datetime
     
    select c1 from toto
     
    c1
    -----------------------
    2012-03-12 11:02:00.000

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mars 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 52
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Le SGBD a l'air de s'en sortir assez bien tout seul :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    create table toto (c1 varchar(20))
     
    insert into toto (c1) values ('12/03/2012 11:02:00')
     
    select c1 from toto
     
    c1
    --------------------
    12/03/2012 11:02:00
     
     
    set dateformat dmy
     
    alter table toto
    alter column c1 datetime
     
    select c1 from toto
     
    c1
    -----------------------
    2012-03-12 11:02:00.000
    Heu... j'ai une erreur étonnante....

    Requête SQL:
    SET dateformat dmy;
    MySQL a répondu: Documentation
    #1193 - Unknown system variable 'dateformat'

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Si vous ne me reprenez pas quand je vous dis que vous êtes sur SQL-Server et qu'en fait vous êtes sur MySQL, forcément !

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mars 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 52
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Si vous ne me reprenez pas quand je vous dis que vous êtes sur SQL-Server et qu'en fait vous êtes sur MySQL, forcément !
    J'avoue que pour moi, c'est la meme chose....

  9. #9
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    C'est comme si je vous disais que Java et .NET c'est pareil !
    Je ne connais que très peu MySQL, je ne sais pas s'il sait effectuer la conversion à la volée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT STR_TO_DATE('12/03/2012 11:02:00', '%d/%m/%Y %H:%i:%s')

  10. #10
    Nouveau membre du Club
    Inscrit en
    Mars 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 52
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par Waldar Voir le message
    C'est comme si je vous disais que Java et .NET c'est pareil !
    Je ne connais que très peu MySQL, je ne sais pas s'il sait effectuer la conversion à la volée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT STR_TO_DATE('12/03/2012 11:02:00', '%d/%m/%Y %H:%i:%s')
    Ca devrait le faire!!!!
    Je vais verifier ça!
    Merci!

  11. #11
    Nouveau membre du Club
    Inscrit en
    Mars 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 52
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par pierricktpt Voir le message
    Ca devrait le faire!!!!
    Je vais verifier ça!
    Merci!
    Bon, je confirme. Cela marche nickel!
    Merci encore!!

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

Discussions similaires

  1. Probleme de conversion String -> Date avec SimpleDateFormat.parse(String)
    Par jeanlouis_lecodeur dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 02/07/2007, 09h18
  2. Réponses: 2
    Dernier message: 16/02/2007, 21h34
  3. [MySQL] Probleme de conversion de date en format francophone
    Par bilou95 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 21/11/2006, 11h40
  4. [debutant]probleme de conversion de date
    Par julien31009 dans le forum Langage
    Réponses: 6
    Dernier message: 22/10/2006, 15h56
  5. Probleme de conversion de dates
    Par manu00 dans le forum Langage
    Réponses: 4
    Dernier message: 29/05/2005, 00h00

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