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

PHP & Base de données Discussion :

[SQL] Transfert de données, problème de date


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Technicien maintenance
    Inscrit en
    Mai 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mai 2007
    Messages : 123
    Par défaut [SQL] Transfert de données, problème de date
    J'ai une ancienne base sous access avec différentes données, je veux transférer ces données sous MY SQL

    Donc j'exporte ma table dans un fichier texte, je l'importe sous MY SQL et tout va bien sauf les champs date qui affichent :
    0000-00-00 00:00:00


    Comment faire pour que les dates s'affichent correctement ?

  2. #2
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 21
    Par défaut
    A mon avis ceci est du au fait que mysql nécessite un format de date US. Il faudrait donc que tu exécute un traitement (perl?) pour faire la transformation:
    JJ-MM-AAAA --> AAAA-MM--JJ

  3. #3
    Membre confirmé
    Technicien maintenance
    Inscrit en
    Mai 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mai 2007
    Messages : 123
    Par défaut
    Et je fais ca comment ?

  4. #4
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 21
    Par défaut
    ça dépend de ton fichier texte je ne peux pas te dire exectement comment faire cependant cette fonction peut faire le traitement si tu rentre une date en parametre.

    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
    #fonction qui permet de convertir les dates au format US pour les exploiter dans mysql	 01/05/2007 --> 2007/05/01
     
    	sub convertir_Date
    	{
    		$DATE=$_[0];
    		if($DATE =~ /(\d*)\/(\d*)\/(\d*)/)
    		{
    		            my $day = $1;
                                          my $month = $2;  
                                          my $year = $3;  
     
    			$DATE=$year.'/'.$month.'/'.$day;
     
    			return $DATE;
    		}
    	}

  5. #5
    Membre confirmé
    Technicien maintenance
    Inscrit en
    Mai 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mai 2007
    Messages : 123
    Par défaut
    Mon fichier texte c'est un fichier du bloc note.

    Une ligne ressemble à ça :

    *****;***;**;**;"**";"*******";"******";29/4/1982 00:00:00;"*****************************";"*****";"********";"*************";"*************";;"**************";;;*;;;;

    sans les étoiles


    Et je veux que les données dans ma base MY SQL soit en jj/mm/aaaa même quand on les inserera par requête

  6. #6
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Je ne pense pas que tu puisses changer le format des dates de mysql puisque c'est un type par défaut de mysql.
    La solution la plus simple serait de stocker tes dates comme des VARCHAR plutot que comme des dates justement, ca dépend donc des opérations que tu fais sur ces champs.

  7. #7
    Membre confirmé
    Technicien maintenance
    Inscrit en
    Mai 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mai 2007
    Messages : 123
    Par défaut
    Je ne sais pas quelle va être l'utilisation de ces champs. Je suis en stage et on me demande de prendre la suite du développement un base en pHp

  8. #8
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Dans ce cas, il vaut mieux garder la notion de Date et non pas les stocker en texte. Et donc il va falloir convertir les dates extraites d'access vers le format de date de Mysql
    ensuite toutes les dates seront stockées au format de mysql aaaa-mm-jj hh:mm:ss

    Par contre, a l'affichage des résultats, rien ne t'empeche en php de changer le format donc ca ne changera rien pour l'utilisateur de l'application, c'est a toi de gérer les scripts php pour inscrire les dates dans un format différent

  9. #9
    Membre confirmé
    Technicien maintenance
    Inscrit en
    Mai 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mai 2007
    Messages : 123
    Par défaut
    Oui, je sais je suis pas très forte. Mais, je la fais comment la conversion ?

  10. #10
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 21
    Par défaut
    en php tu peux utiliser ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      <?php 
     
      $date = "30-11-2005"; 
      $date_convertie = eregi_replace("([0-9].*)-([0-9].*)-([0-9].*)" ,"\\3-\\2-\\1" , $date); 
      echo $date_convertie; 
     
      ?>
    Après il faut que tu essais d'exécuter un traitement php qui récupère tes dates dans le champs $date.

  11. #11
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Il va falloir utiliser des expressions régulieres je pense, donc faire un script php qui lit ton fichier, et convertit les dates. Une fois que t'as le nouveau fichier texte tu peux l'importer dans mysql.
    Par contre les expressions régulières ca n'est pas mon fort, désolé! T'as un exemple de fonction qui ferait ca plus haut, c'est tout ce que je peux te dire...

  12. #12
    Membre confirmé
    Technicien maintenance
    Inscrit en
    Mai 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mai 2007
    Messages : 123
    Par défaut
    C'est quoi les expressions régulières ?

  13. #13
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    http://php.developpez.com/cours/#langage-regexes

    En gros y a plusieurs étapes a faire pour transformer ton fichier
    1/ tu lis le fichier avec file_get_contents()
    2/ tu découpes ce fichier en un tableau de lignes (pour récupérer chaque ligne) avec les expressions régulières ou juste la fonction php explode()
    3/ Pour chaque ligne, tu vas appliquer une sorte de masque (un pattern) qui va permettre de reconnaître la partie à modifier. Pour toi ca revient a dire, "j'ai un ensemble de champs séparés par des virgules, je dois changer ceux qui correspondent a des dates)
    4/ Une fois toutes ces lignes modifiées par ton/tes expression(s) régulière(s) tu écris le résultat dans un nouveau fichier avec file_put_contents()
    5/ tu importes le nouveau fichier dans mysql.

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

Discussions similaires

  1. [MySQL] Transfert de données suivant date - SQL
    Par yohan0262 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/11/2009, 14h10
  2. [SQL*Loader] ORA-01830 problème de date
    Par StreM dans le forum SQL
    Réponses: 7
    Dernier message: 24/08/2009, 16h45
  3. Transfert vers excel, problème format DATE
    Par Plumette_ dans le forum AS/400
    Réponses: 2
    Dernier message: 23/10/2008, 19h51
  4. Transfert de données vers My SQL
    Par zoso dans le forum Outils
    Réponses: 2
    Dernier message: 30/09/2003, 10h21

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