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 :

Récupérer le 1er jour du mois correspondant à la date d’aujourd’hui moins 12 mois


Sujet :

Développement de jobs

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2014
    Messages : 406
    Points : 174
    Points
    174
    Par défaut Récupérer le 1er jour du mois correspondant à la date d’aujourd’hui moins 12 mois
    Bonjour,

    Voilà mon souci je souhaite récupérer 1er jour du mois correspondant à la date d’aujourd’hui moins 12 mois.

    j'ai essayer cette formule mais si je poste mon souci c'est que ça marche pas.

    TalendDate.getFirstDayOfMonth(TalendDate.getCurrentDate("dd-MM-yyyy")-12)
    Quelqu'un à t il déjà eu ce souci?

    merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2010
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 343
    Points : 653
    Points
    653
    Par défaut
    1) tu ne peux pas soustraire directement 12 a une date
    2) la methode getCurrentDate() ne prend pas de paramètre

    Voila quelque chose qui fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TalendDate.getFirstDayOfMonth(TalendDate.addDate(TalendDate.getCurrentDate(), -12 ,"MM") )

  3. #3
    Membre éclairé Avatar de MythOnirie
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2012
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 376
    Points : 795
    Points
    795
    Par défaut
    Bonjour,

    La liste des fonctions de type TalendDate est ici.

    Faire le -12 n'as pas de sens sur un objet de type Date. Pour cela, tu as la fonction addDate() qui permet d'ajouter ou de retirer des jours/mois/années ...

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2014
    Messages : 406
    Points : 174
    Points
    174
    Par défaut
    Merci,
    TalendDate.getFirstDayOfMonth(TalendDate.addDate(TalendDate.getCurrentDate(), -12 ,"MM") )
    je rebondis sur ce points , et si j veux faire :
    T1.Date_debut >=TalendDate.getFirstDayOfMonth(TalendDate.addDate(TalendDate.getCurrentDate(), -12 ,"MM") )

    en sachant que T1.Date_debut est au format date mais j'ai ce message d'erreur :

    les types d'operande Date et String sont incompatibles talend
    Auriez vous une idée?

  5. #5
    Membre averti

    Homme Profil pro
    informatique
    Inscrit en
    Avril 2013
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 280
    Points : 406
    Points
    406
    Billets dans le blog
    1
    Par défaut
    verifie bien le type de format de T1.Date_debut car TalendDate.getFirstDayOfMonth(TalendDate.addDate(TalendDate.getCurrentDate(), -12 ,"MM") ) est de type date

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2014
    Messages : 406
    Points : 174
    Points
    174
    Par défaut
    T1.Date_debut il est bien au forma date (dd-MM-yyyy) .

    est ce je l'écris bien ma syntaxe :

    T1.Date_debut >=TalendDate.getFirstDayOfMonth(TalendDate.addDate(TalendDate.getCurrentDate(), -12 ,"MM") )
    je devrais pas mettre le format ou le TalendDate , comme là par exemple:

    TalendDate.Format("dd-MM-yyyy",T1.Date_debut) >=TalendDate.getFirstDayOfMonth(TalendDate.addDate(TalendDate.getCurrentDate(), -12 ,"MM") )
    je sais pas.

  7. #7
    Membre éclairé Avatar de MythOnirie
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2012
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 376
    Points : 795
    Points
    795
    Par défaut
    Au lieu de faire -12 mois, tu devrais faire -1 ans, à mon sens ça serait plus lisible.

    Ensuite, ton champs T1.Date_debut est de type string non ?

    Après il y a une fonction permettant de comparer les dates, dans le lien que je t'ai indiqué.

  8. #8
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2010
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 343
    Points : 653
    Points
    653
    Par défaut
    Bonjour,

    Pour vérifier le type Date_debut, il faut regarder la colonne type du schema Talend.

    T1.Date_debut il est bien au forma date (dd-MM-yyyy) .
    Donc je pense que ta colonne est bien de type date et le format de présentation est "dd-MM-yyyy" qui est le format par défaut.

    Les opérateurs ne fonctionnent pas avec les type date, donc tu est obligé d'utiliser des fonctions : TalendDate.compareDate(Date1, Date2)
    cette routine retourne -1 si Date1 < Date2, 0 si Date1 = Date2 et 1 si Date1 > Date2

    voici un exemple qui retourne true :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TalendDate.compareDate(TalendDate.getCurrentDate(), TalendDate.getFirstDayOfMonth(TalendDate.addDate(TalendDate.getCurrentDate(), -12 ,"MM") ) )>=0

  9. #9
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2014
    Messages : 406
    Points : 174
    Points
    174
    Par défaut
    ton champs T1.Date_debut est de type string non ?
    non

    Nom : Capture_date.PNG
Affichages : 1350
Taille : 1,9 Ko

  10. #10
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2014
    Messages : 406
    Points : 174
    Points
    174
    Par défaut
    Citation Envoyé par emenuet Voir le message
    Bonjour,

    Pour vérifier le type Date_debut, il faut regarder la colonne type du schema Talend.


    Donc je pense que ta colonne est bien de type date et le format de présentation est "dd-MM-yyyy" qui est le format par défaut.

    Les opérateurs ne fonctionnent pas avec les type date, donc tu est obligé d'utiliser des fonctions : TalendDate.compareDate(Date1, Date2)
    cette routine retourne -1 si Date1 < Date2, 0 si Date1 = Date2 et 1 si Date1 > Date2

    voici un exemple qui retourne true :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TalendDate.compareDate(TalendDate.getCurrentDate(), TalendDate.getFirstDayOfMonth(TalendDate.addDate(TalendDate.getCurrentDate(), -12 ,"MM") ) )>=0
    Là c'est pour comparer deux dates, moi effectivement je veux comparer, mais date 1 doit etre > à date 2 . (Apres j'ai d'autre condition. après cette condition : date1>date2 && ...&&...&& || ...&& )
    Du coup j'ai un eu de mal à voir comment m'en servir par la suite (désolé je débute).

    merci

  11. #11
    Membre éclairé Avatar de MythOnirie
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2012
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 376
    Points : 795
    Points
    795
    Par défaut
    Citation Envoyé par mano_bi Voir le message
    Là c'est pour comparer deux dates, moi effectivement je veux comparer, mais date 1 doit etre > à date 2 . (Apres j'ai d'autre condition. après cette condition : date1>date2 && ...&&...&& || ...&& )
    Du coup j'ai un eu de mal à voir comment m'en servir par la suite (désolé je débute).

    merci
    Sur la doc de Talend :

    compareDate :
    compare tout ou partie de deux dates, selon le modèle date si spécifié. Retourne 0 si les dates sont identiques, 1 si la première date est ultérieure à la deuxième et -1 si elle est antérieure à la deuxième.


    TalendDate.compareDate(Date date1, Date date2, "format à comparer - ex : yyyy-MM-dd ")

  12. #12
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2014
    Messages : 406
    Points : 174
    Points
    174
    Par défaut
    Citation Envoyé par MythOnirie Voir le message
    Sur la doc de Talend :
    J'essai de suivre la doc et vos exemples :

    j'ai fait :
    TalendDate.compareDate(TalendDate.formatDate("dd-MM-yyyy",row6.RELEVE_DATE), TalendDate.getFirstDayOfMonth(TalendDate.addDate(TalendDate.getCurrentDate(),-12,"MM") ) )>=0

    et j'ai ce message d'erreur :
    Nom : Capture2.PNG
Affichages : 1375
Taille : 2,5 Ko

    Aucun n'est au format String pourtant.

  13. #13
    Membre éclairé Avatar de MythOnirie
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2012
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 376
    Points : 795
    Points
    795
    Par défaut
    formatDate() renvoie un String. Il n'y a nul besoin de l'utiliser ici.

  14. #14
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2014
    Messages : 406
    Points : 174
    Points
    174
    Par défaut
    Citation Envoyé par MythOnirie Voir le message
    formatDate() renvoie un String. Il n'y a nul besoin de l'utiliser ici.
    si je fais ça ,
    TalendDate.compareDate(row6.RELEVE_DATE, TalendDate.getFirstDayOfMonth(TalendDate.addDate(TalendDate.getCurrentDate(),-12,"MM") ) )>=0

    j'ai la même erreur..

  15. #15
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2014
    Messages : 406
    Points : 174
    Points
    174
    Par défaut
    Et dans ma quête aux erreurs , j'ai ça maintenant :

    "Non concordance de types : impossible de convertir de boolean en Date"

  16. #16
    Membre éclairé Avatar de MythOnirie
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2012
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 376
    Points : 795
    Points
    795
    Par défaut
    Montre nous la formule entière, sinon nous ne pourrons pas deviner où se trouve l'erreur.

  17. #17
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2014
    Messages : 406
    Points : 174
    Points
    174
    Par défaut
    Ma formule 1: j'ai essayer cette formule

    row6.RELEVE_DATE >=TalendDate.addDate(TalendDate.getFirstDayOfMonth(TalendDate.getCurrentDate()) ,-12 ,"MM")
    /* &&
    Integer.parseInt("".equals(row6.CONTRAT_DATE) && ("NC".equals(row6.CODE_ERROR))?"1":"0"); */
    Ma formule 2 : puis cette formule
    ( (TalendDate.compareDate(row6.RELEVE_DATE,Var.PREM_JOUR_MOIS,"yyyy-MM-dd") >= 0)
    &&
    ("".equals(TalendDate.formatDate("yyyy-MM-dd",row6.CONTRAT_DATE) ) )
    &&
    ("NC".equals(row6.CODE_ERROR) )
    )? 1:0;
    Les types des champs:
    RELEVE_DATE --> Date
    CONTRAT_DATE --> Date
    CODE_ERROR--> String

    la règle :
    POSE=1 si le a été posé, 0 sinon. La valeur 1 est renseignée si:

    RELEVE_DATE >= 1er jour du mois correspondant à la date d’aujourd’hui moins 12 mois
    ET
    CONTRAT_DATE différent de ‘ ’
    ET
    CODE_ERROR=’NC’


    Je sais pas si j'ai pu apporté tout les éléments.

    merci

  18. #18
    Membre éclairé Avatar de MythOnirie
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2012
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 376
    Points : 795
    Points
    795
    Par défaut
    Si tu utilise Var.PREM_JOUR_MOIS je suppose que tu es dans un tMap.

    Donc ta formule a pour but d'alimenter un champ. Si tel est le cas, tu n'as pas besoin de ";" à la fin de ta formule.

  19. #19
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2014
    Messages : 406
    Points : 174
    Points
    174
    Par défaut
    Oui, suis bien dans un tMap.
    Merci pour le conseil

  20. #20
    Membre éclairé Avatar de MythOnirie
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2012
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 376
    Points : 795
    Points
    795
    Par défaut
    Quel est donc l'erreur avec cette formule ? Toujours
    "Non concordance de types : impossible de convertir de boolean en Date" ?

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

Discussions similaires

  1. [2005] Liste de dates de fin de mois entre deux dates
    Par scornille dans le forum Développement
    Réponses: 2
    Dernier message: 16/09/2013, 15h03
  2. Extraire le mois d'une date et connaitre le mois en cours
    Par Whinging dans le forum Langage SQL
    Réponses: 7
    Dernier message: 02/04/2008, 20h33
  3. Récupérer le jour, le mois dans une date mysql
    Par sandddy dans le forum Requêtes
    Réponses: 2
    Dernier message: 18/03/2008, 11h54
  4. 1er jour du mois suivant parametres regionaux
    Par nevil dans le forum IHM
    Réponses: 4
    Dernier message: 29/08/2007, 13h48
  5. Obtenir le 1er jour du mois d'une date
    Par soso78 dans le forum Access
    Réponses: 4
    Dernier message: 27/09/2005, 12h15

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