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 :

Concaténation de Date


Sujet :

Développement de jobs

  1. #1
    Membre habitué
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Juillet 2011
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Juillet 2011
    Messages : 199
    Points : 129
    Points
    129
    Par défaut Concaténation de Date
    Bonjour,

    je me rencontre un problème concernant la concaténation de 2 champs pour former une date.

    je m'explique :

    dans une table SQL j'ai 2 colonnes (Jours,Période)

    dans la colonne "Jours" j'ai le jour du mois ( 10,9,15,17...)

    dans la colonne "Periode" j'ai la date au premier jour du mois (01/10/2012, 01/07/2012)

    j'ai besoin pour travailler d'avoir une date correcte soit :10/10/2012, 09/07/2012.....

    connaissez vous un moyen de faire cette manipulation dans TALEND


    je passe par un TMAP donc je peux faire la transformation a l'intérieur


    merci

  2. #2
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    Bonjour,

    Un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((String)TalendDate.addDate("01/10/2012","dd/MM/yyyy",(10-1),"dd"))
    Remplacer "01/10/2012" et 10 par les valeurs venant de ta base.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  3. #3
    Membre habitué
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Juillet 2011
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Juillet 2011
    Messages : 199
    Points : 129
    Points
    129
    Par défaut
    merci Archange

    je ne connaissais pas cette fonction,

    par contre j'ai un message dans mon tmap

    Exception in component tMap_1
    java.lang.RuntimeException: dd/MM/yyyy can't support the date!
    tu as une idée

    Nom : talend.JPG
Affichages : 392
Taille : 131,9 Ko

  4. #4
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    Oui ton champ d'entré doit être au format Date, cette fonction attend un String.

    Essaye ton champ.toString();

    Pour repasser en date :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TalendDate.parseDate("dd/MM/yyyy",DateEnString)
    edit : je n'avais pas vu ta pièce jointe , en bas à gauche ta variable est définie avec un format dd-MM-yyyy alors que dans ta fonction tu as des //

    attention aussi j'ai changé entre temps, il faut rajouter le "-1" sinon 10+1 ça fait 11
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  5. #5
    Membre habitué
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Juillet 2011
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Juillet 2011
    Messages : 199
    Points : 129
    Points
    129
    Par défaut
    désolé je comprend pas

    mon champ de destination est en String

    et j'ai passé la formule suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((String)TalendDate.addDate(row1.PeriodeEcriture.toString(),"dd-MM-yyyy",row1.JourEcriture,"dd"))
    cette formule, si je la lit correctement , renvoi un String et non une date ?

    c'est ca.

  6. #6
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    désolé je comprend pas
    Oui c'est un String, si c'est par rapport à mon post du dessus je reprend :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((String)TalendDate.addDate(row1.PeriodeEcriture.toString(),"dd-MM-yyyy",(row1.JourEcriture-1),"dd"))
    pour enlever le 1er jour

    et si tu souhaites repasser en Date :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TalendDate.parseDate("dd-MM-yyyy",((String)TalendDate.addDate(row1.PeriodeEcriture.toString(),"dd-MM-yyyy",(row1.JourEcriture-1),"dd")))
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  7. #7
    Membre habitué
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Juillet 2011
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Juillet 2011
    Messages : 199
    Points : 129
    Points
    129
    Par défaut
    oui j'ai vu apres que tu avais modifié ton post

    j'ai copier / coller ta formule il me fait pareil

    je suis passé en Date dans mon champ et j'ai mis dans le meme format que dans la formule dd-mm-YYYY mais il me claque le meme message

  8. #8
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    HUmmm, pour voir si le souci vient bien de la remplace le row1.PeriodeEcriture.toString() par un test "01-10-2012".
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  9. #9
    Membre habitué
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Juillet 2011
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Juillet 2011
    Messages : 199
    Points : 129
    Points
    129
    Par défaut
    avec la date "01-10-2012" ca fonctionne

    je pense avoir trouvé ... enfin la cause..

    dans la base de donnée la date est stockée comme ca :"2012-12-01 00:00:00"

    c'est pas dans le meme sens que ce que j'ai marqué dans mon poste !

    tu en penses quoi ?

  10. #10
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    Dans ta base il n'est pas en Date mais en DateTime. Euhh de mémoire le parse doit fonctionner sur un DateTime :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((String)TalendDate.addDate(TalendDate.parseDate("dd-MM-yyyy",row1.PeriodeEcriture).toString(),"dd-MM-yyyy",(row1.JourEcriture-1),"dd"))
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  11. #11
    Membre habitué
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Juillet 2011
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Juillet 2011
    Messages : 199
    Points : 129
    Points
    129
    Par défaut
    le .toString
    dans
    TalendDate.parseDate(dd-MM-yyyy,row1.PeriodeEcriture).toString()

    ne fonctionne pas j'ai essayé avec l'autocomplession mais il propose que toarray

    humm pas facile ..

  12. #12
    Membre actif Avatar de kayim
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2011
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2011
    Messages : 134
    Points : 283
    Points
    283
    Par défaut
    hello,

    Pour le .toString() tu peux essayer de faire :

    TalendDate.parseDate(dd-MM-yyyy,row1.PeriodeEcriture)+""

    Kayim
    Etre un homme c'est regarder le diable droit dans les yeux et lui dire d'aller se faire foutre...

  13. #13
    Membre actif Avatar de kayim
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2011
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2011
    Messages : 134
    Points : 283
    Points
    283
    Par défaut
    sinon pour le problème initiale :

    J'ai essayé ceci ça a l'air de marcher

    Voir PJ avec Jours integer et Periode Date au format "dd-MM-yyyy", new_Date String
    Images attachées Images attachées  
    Etre un homme c'est regarder le diable droit dans les yeux et lui dire d'aller se faire foutre...

  14. #14
    Membre habitué
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Juillet 2011
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Juillet 2011
    Messages : 199
    Points : 129
    Points
    129
    Par défaut
    merci a tous,

    j'essai de tester aujourd'hui et je vous répond

  15. #15
    Membre habitué
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Juillet 2011
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Juillet 2011
    Messages : 199
    Points : 129
    Points
    129
    Par défaut
    bon j'ai reussi je sais pas si c'est propre pour des spécialistes comme vous mais ça a le mérite de fonctionner

    dans mon schéma TMSSQLINPUT j'ai mis que le champ de la table était en DATE et pas DATETIME
    et que dans TALEND c'était du DATE

    j'a utilisé un composant 'Tconverttype' pour convertir ma zone en String


    dans mon TMAP j'ai mis la formule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TalendDate.parseDate("dd-MM-yyyy",((String)TalendDate.addDate(entree.PeriodeEcriture,"dd-MM-yyyy",(entree.JourEcriture)-1,"dd")))
    avec une sortie en Date

    merci à vous tous pour votre aide

  16. #16
    Membre à l'essai
    Femme Profil pro
    Stagiaire BI
    Inscrit en
    Août 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Stagiaire BI
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 70
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par progscoubi Voir le message
    bon j'ai reussi je sais pas si c'est propre pour des spécialistes comme vous mais ça a le mérite de fonctionner

    dans mon schéma TMSSQLINPUT j'ai mis que le champ de la table était en DATE et pas DATETIME
    et que dans TALEND c'était du DATE

    j'a utilisé un composant 'Tconverttype' pour convertir ma zone en String


    dans mon TMAP j'ai mis la formule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TalendDate.parseDate("dd-MM-yyyy",((String)TalendDate.addDate(entree.PeriodeEcriture,"dd-MM-yyyy",(entree.JourEcriture)-1,"dd")))
    avec une sortie en Date

    merci à vous tous pour votre aide


    Bonjour progscoubi,

    Je voudrai concaténer de deux colonnes de type string vers une colonne de type date.

    source
    année mois
    2014 1
    2015 12
    2014 3
    2013 10

    cible yyyy-MM-dd

    Pouvez vous m'aidez s'il vous plaît?

    Merci d'avance.

  17. #17
    Membre habitué
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Septembre 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2013
    Messages : 30
    Points : 178
    Points
    178
    Par défaut
    Bonjour

    le moyen le plus simple est de concaténer tes deux champs dans une variable et ensuite de transformer ta variable avec une méthode ParseDate()

    Par contre d'une donnée 2014 01 en faire une date avec YYYY-MM-DD c'est un peu compliqué si le jour n'est pas présent.
    Est ce que tu veux le premier jour du mois ?

    la méthode pour être comme cela
    TalendDate.parseDate("yyyy-MM-dd",row18.String1 +"-" + row18.String2 +"-01")

    tu obtiens une date au format suivant :
    2014-01-01

    par contre attention tes mois sont au format "1" , "2" et pas "01" ou "02" ... et il faudra que tu rajoutes un "0" avant tous les chiffres qui ont une longueur inférieure a 2

  18. #18
    Membre habitué
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Septembre 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2013
    Messages : 30
    Points : 178
    Points
    178
    Par défaut
    Pour compléter ce que je disais juste avant:

    Var1 ==> StringHandling.LEN(row18.String2)<2? "0" +row18.String2 : row18.String2
    Var2 ==> TalendDate.parseDate("yyyy-MM-dd",row18.String1 +"-" + Var.var1 +"-01")

  19. #19
    Membre à l'essai
    Femme Profil pro
    Stagiaire BI
    Inscrit en
    Août 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Stagiaire BI
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 70
    Points : 22
    Points
    22
    Par défaut
    Bonjour Burgundus,

    Merci beaucoup,

    Oui je voudrai avoir le premier jour du mois.

  20. #20
    Membre habitué
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Septembre 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2013
    Messages : 30
    Points : 178
    Points
    178
    Par défaut
    Bonjour
    Pour faire plus propre tu as cela :

    En String==> StringHandling.LEN(row18.String2)<2? "0" +row18.String2 : row18.String2

    En Date ==> TalendDate.getFirstDayOfMonth(TalendDate.parseDate("yyyy-MM",row18.String1 +"-" + Var.var1 ) )

    et tu obtient le premier jour du mois que tu as calculer dans "2014 01" par exemple.

    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Concaténer 2 dates
    Par Mister Nono dans le forum Langage
    Réponses: 3
    Dernier message: 20/09/2007, 12h21
  2. Concaténation des dates
    Par ouadii dans le forum Excel
    Réponses: 1
    Dernier message: 19/09/2007, 10h51
  3. Concaténation de dates
    Par karidrou dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 04/09/2007, 16h05
  4. Réponses: 1
    Dernier message: 06/05/2007, 11h56
  5. Concaténation de Date
    Par folako dans le forum Langage SQL
    Réponses: 4
    Dernier message: 07/03/2007, 14h24

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