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

SQL Procédural MySQL Discussion :

Trigger conversion varchar en date


Sujet :

SQL Procédural MySQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 58
    Points : 27
    Points
    27
    Par défaut Trigger conversion varchar en date
    Bonjour,

    Voilà n'étant que peu expérimenté en MySQL, et en cherchant un peu je n'ai pas réussi à résoudre mon problème.

    Je vous explique:

    J'ai une table testdate qui contient 2 champs:
    - DATE qui est un varchar(15)
    - DATE_SQL qui est de type DATE

    Le problème c'est que je dois faire un import d'un fichier csv qui contient le champ DATE sous le format DD/MM/YYYY qui ne correspond pas au format du type DATE de MySQL.
    Or j'ai pensé à rendre le champ DATE en varchar et crée un nouveau champ DATE_SQL de type DATE afin de pouvoir effectué des "calculs"

    Donc il m'est venu aussi à l'esprit qu'à chaque import d'une date dans le champ DATE un trigger converti le varchar en date a l'aide de STR_TO_DATE mais voilà je n'arrive pas à faire fonctionner mon trigger :S

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TRIGGER TR_DateToDateSQL
    AFTER INSERT ON testdate
    FOR EACH ROW
     
    BEGIN
    update testdate set DATE=DATE(STR_TO_DATE(new.DATE_SQL, '%Y%m%d'));
     
    end//
    P.S: Il m'est impossible de changer tout simplement le format de la date dans le CSV sous Excel car j'ai énormément de fichiers différents contenant des dates.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,

    Et pourquoi ne reformattez-vous pas votre date lors du load ?

    cherchez un peu il y a des exemples sur google.

    If you're using MySQL 5.0 or higher, you can read a column into a user
    variable and use SET to reformat the column value before inserting it
    into the table. Example:

    (The format string depends on the format of your input data, of course.)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    LOAD DATA LOCAL INFILE 'newdata.txt'
    INTO TABLE t (name,@date,value)
    SET date = STR_TO_DATE(@date,'%m/%d/%y');
    http://dev.mysql.com/doc/refman/5.0/en/load-data.html

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 58
    Points : 27
    Points
    27
    Par défaut
    Merci beaucoup punkoff, je ne savais pas que c'était possible

    Cependant en faisant comme cela je n'arrive plus a ajouter les conditions du CSV comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    FIELDS TERMINATED BY ';'
    ENCLOSED BY '"'
    ESCAPED BY '\'
    LINES TERMINATED BY '\r\n'
    IGNORE 1 LINES
    et me rajoute tous dans la premiere colonne.

    mais si je ne les renseigne pas alors cela fonctionne sur un fichier test avec la première ligne qui est enlevée du CSV

    Et une dernière petite question peut-on obliger mysql a prendre la valeur NULL et pas 0 quand j'importe une case vide sur un INT car il est possible d'avoir un 0 dans mon champ mais aussi possible que cette valeur ne soit pas renseigné et donc pouvoir faire la différence entre les deux.

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/10/2010, 05h02
  2. Debutant: conversion varchar en date
    Par krimo22 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 05/08/2008, 20h10
  3. Conversion varchar en date
    Par GreatDeveloperOnizuka dans le forum Langage SQL
    Réponses: 3
    Dernier message: 31/01/2008, 16h18
  4. Conversion varchar en date
    Par kaboume dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 18/08/2006, 16h29
  5. conversion String en Date (parse trop permissif)
    Par ciloulou dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 13/09/2004, 18h36

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