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

Développement de jobs Discussion :

Transformation du type et format de la Date


Sujet :

Développement de jobs

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 20
    Points : 20
    Points
    20
    Par défaut Transformation du type et format de la Date
    Bonjour,

    Je travail sur la migration de donnée d'une base de donnée MySQL vers Oracle,
    je me heurte à un problème lors de la transformation de la date, en effet dans la base de donnée MySQL le type et le format de cette datte diffère de celui de la base Oracle voici un petit récapitulatif :
    MySQL db ------------->>>>>> Oracle db
    Type "String" ------------->>>>> Type "Date"
    Format " yy/MM/dd " ------------->>>>> Format " dd-MM-yyyy "
    j'ai essayé d'utiliser la fonction TalendDate.parseDate("dd-MM-yy",row1.Date)mais ça marche pas !!!!

    Merci pour votre aide

  2. #2
    Rédacteur
    Avatar de jsd03
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Août 2008
    Messages : 1 221
    Points : 6 506
    Points
    6 506
    Par défaut
    Bonjour et bienvenue sur le forum,

    Il faut que tu changes la valeur de la colonne "pattern" (ou Modèle date si tu es en français) dans le schéma de sortie du tOracleOuput pour ta colonne de Date en spécifiant "dd-MM-yyyy"

    et que tu utilises effective le parseDate comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TalendDate.parseDate("dd-MM-yyyy", row1.Date)
    Si tu as toujours une erreur, donne nous l'erreur Java retournée pour qu'on analyse mieux ton problème.
    Google est ton ami mais ton voisin aussi

    Modérateur BI - Responsable Talend
    Mes tutoriels - FAQ Talend - FAQ SQL*Plus

    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Suivez @Developpez sur twitter !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 20
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par jsd03 Voir le message
    Bonjour et bienvenue sur le forum,

    Il faut que tu changes la valeur de la colonne "pattern" (ou Modèle date si tu es en français) dans le schéma de sortie du tOracleOuput pour ta colonne de Date en spécifiant "dd-MM-yyyy"

    et que tu utilises effective le parseDate comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TalendDate.parseDate("dd-MM-yyyy", row1.Date)
    Si tu as toujours une erreur, donne nous l'erreur Java retournée pour qu'on analyse mieux ton problème.
    J'ai bien utilisé le TalendDate.parseDate("dd-MM-yyyy", row1.Date), mais le problème est que dans le champ date à parser il y a des entrées date nulles du genre "np/np/np" donc à mon avis il faut faire une routine pour tester si la date en entrée est une date valide du genre "dd/MM/yyyy" puis si c'est le cas je fait un parse de cette datte sinon j'insère la date "01-01-1900".

    Pouvez vous m'expliquer comment faire cette routine ?

    Merci d'avance pour vos réponses.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 20
    Points : 20
    Points
    20
    Par défaut
    Bonjour,
    Pour transformer les dates j'ai crée la routine suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public static java.util.Date testDate(String aDate, String aformat) {
    java.util.Date lResultat = null;
    boolean isdate;
    isdate = false;
    isdate = TalendDate.isDate(aDate, aformat);
    if (isdate = false ) {
    lResultat = TalendDate.parseDate("dd-MM-yyyy","01-01-1900";
    } else {
    lResultat = TalendDate.parseDate(aformat,20+aDate);
    }
    return lResultat;
    }
    en fait elle test avec la fonction isDate c'est le string passé en paramètre est bien sous forme d'une date !
    si le resultat de isDate est false, j'insère la date "01-01-1900" sinon si isDate est true on parse la date passé en paramètre.

    Après exécution, cette routine ne donne pas le résultat attendu !!

    Pouvez vous me dire s'il manque quelque chose dans la routine ?
    ou est ce qu'il faut que je m'y prenne autrement ?

    Merci

  5. #5
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Citation Envoyé par hawk16 Voir le message
    Pouvez vous me dire s'il manque quelque chose dans la routine ?
    Oui : une syntaxe correcte . Une comparaison en Java se fait avec un double symbole égal "==" (le simple "=" effectue une affectation, et renvoie la valeur affectée, soit toujours false dans ton cas). De plus, on ne compare pas les booléens avec "==" dans un test :
    Remarque : pourquoi cette concaténation de "20" à la date ? Elle devrait être préformatée avant d'entrer dans cette routine.

    Remarque 2 :merci de penser à la balise "CODE"
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 20
    Points : 20
    Points
    20
    Par défaut
    C'est bon j'ai résolu le problème voici la routine finale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public static java.util.Date testDate(String aDate, String aformat) {
        	java.util.Date lResultat = null;
        	String string1 = "np/np/np";
        	if (string1.equalsIgnoreCase(aDate)|| aDate==null )
              	lResultat = TalendDate.parseDate("dd-MM-yyyy","01-01-1900");
        	else {
        		  	lResultat = TalendDate.parseDate(aformat,20+aDate);
        		  	 	    		}
        	return lResultat;
        	}

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

Discussions similaires

  1. Transformer le format d'une date
    Par yoaugoulo dans le forum Développement de jobs
    Réponses: 17
    Dernier message: 02/12/2009, 16h04
  2. transformer un type timestamp en date
    Par viny dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 21/11/2009, 13h18
  3. Transformer un format 'ANNEEMOIS' en date du dernier jours du mois
    Par mat75019 dans le forum Développement
    Réponses: 6
    Dernier message: 27/10/2008, 23h21
  4. [MySQL] Transformation du format de la date de la base de données
    Par npirard dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/10/2007, 19h09
  5. [Dates] transformation du format de la date
    Par maraly dans le forum Langage
    Réponses: 5
    Dernier message: 07/03/2007, 17h20

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