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 :

comparaison de 2 dates dans une requete SQL


Sujet :

Développement de jobs

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 43
    Points : 32
    Points
    32
    Par défaut comparaison de 2 dates dans une requete SQL
    Bonjour,

    Mon problème est le suivant : Je souhaite comparer au sein d'une requête SQL 2 dates, la première étant dans une variable de contexte et la seconde étant dans un des attributs de la table interrogée. Lorsque que la date de la table est plus récente que la date de la variable, je récupère l'élément en sortie sinon je n'en veux pas.

    J'avais songé utiliser la fonction compareDate() de la manière suivante au sein de la requete SQL mais je ne sais pas si c'est possible ?-->

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select * from table1
    where TalendDate.compareDate(table1.date1, context.date2) = 1
    and ..
    and ..
    mais évidement ça ne marche pas le compilateur me dit : "ORA-00904: "TALENDDATE"."COMPAREDATE" : identificateur non valide".....

    J'avais pensé à une autre solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select * from table1
    where table1.date1  <  "+ context.date2 +"
    and ..
    and ..
    cette fois le message suivant est affiché dans la console "ORA-00933: la commande SQL ne se termine pas correctement"

    Merci d'avance pour vos suggestions,
    soyez indulgent avec mes tentatives, je suis novice dans le domaine....

  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,

    Comme vous utilisez une base de données Oracle vous pouvez faire la différence entre deux dates de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    "SELECT * FROM table1
    WHERE table1.date1  <  '"+ context.date2 +"'
    AND ..
    AND .."
    Il manquait juste les simples côtes entre context.date2 : d'où l'erreur Oracle "ORA-00933: la commande SQL ne se termine pas correctement"
    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
    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
    Si la colonne est au format "Date" dans Oracle (et la variable de contexte une chaîne de caractères), il vaut mieux donner explicitement à Oracle la manière de convertir la date pour éviter de dépendre d'une configuration éventuelle du format de dates de la base de données :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    "SELECT * FROM table1
    WHERE table1.date1  < TO_DATE('" + context.date2 +"','DD/MM/YYYY')
    AND ..
    AND .."
    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

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 43
    Points : 32
    Points
    32
    Par défaut
    merci pour ces réponses, je vais essayer ça de suite...

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 43
    Points : 32
    Points
    32
    Par défaut
    désolé mais c'est encore moi, j'ai encore une erreur.

    avec le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    "SELECT * FROM table_CACHE
    WHERE table_CACHE.scd_start > TO_DATE('"+context.execution_date_string+"','yyyy-MM-dd HH:mm:ss')
    AND ..
    AND .."
    la variable "execution_date_string" est stockée avec le format suivant: yyyy-MM-dd HH:mm:ss
    Mon erreur oracle est la suivante : ORA-01810: le code du format apparaît deux fois


  6. #6
    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
    Il faut faire la relation format de date Java et Oracle ce n'est pas tout à fait la même chose.

    Va voir ce lien : http://www.oradev.com/oracle_date_format.jsp. Ça pourra t'aider.

    Et fais des tests sur un client Oracle avant de lancer tes jobs Talend si tu n'es pas sûr de si ta requête s'exécute ou non.
    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 !

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 43
    Points : 32
    Points
    32
    Par défaut
    merci pour la réponse je crois que mon problème est résolu et désolé pour les balises de code , j'y penserais les prochaines fois...

    florian

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

Discussions similaires

  1. [Débutant] [VB.NET] envoi de la date dans une requete SQL via ADO.NET
    Par yassine-art dans le forum ADO.NET
    Réponses: 2
    Dernier message: 28/04/2012, 13h08
  2. [MySQL]pb de récupération de dates dans une requête SQL
    Par MisterGé dans le forum Langage SQL
    Réponses: 2
    Dernier message: 30/07/2007, 13h51
  3. Format date dans une requete SQL
    Par noratec dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 10/01/2007, 12h06
  4. [SQL INTERBASE] format de date dans une requete sql
    Par arnolpourri dans le forum InterBase
    Réponses: 5
    Dernier message: 03/07/2006, 11h42
  5. [MySQL] Comparer des info date dans une requete SQL
    Par kaygee dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 06/01/2006, 21h56

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