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

JDBC Java Discussion :

probleme de date avec PreparedStatement


Sujet :

JDBC Java

  1. #1
    Membre régulier
    Homme Profil pro
    responsable technique
    Inscrit en
    Novembre 2002
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : responsable technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 100
    Points : 89
    Points
    89
    Par défaut probleme de date avec PreparedStatement
    J'ai une table Oracle nommée "DOSSIER" qui contient (entre autres) ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ETAT      NOM    DATE
    --------  ----   ----------
    TERMINE   toto   20/01/2009
    TERMINE   toto   20/01/2009
    les colonnes ETAT et NOM sont des VARCHAR2(50) et la colonne DATE et de type DATE.

    Lorsque je fais une requête paramétrée seulement sur les colonnes ETAT et NOM, ça marche très bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // initialisation de la connexion (marche bien)
    final Connection cnx = getConnection();
    // requete a executer
    final String query = "select doss.ETAT, doss.NOM, doss.DATE from DOSSIER where doss.ETAT = ? AND doss.NOM = ?";
    final PreparedStatement statement = cnx.prepareStatement(query);
    // initialisation des parametres
    statement.setString(1, "TERMINE");
    statement.setString(2, "toto");
    final ResultSet result = statement.executeQuery();
    Dans mon result, j'ai bien les 2 resultats qui sont en base
    Mais si j'ajoute le paramètre de type Date, alors la requête ne fonctionne plus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    final SimpleDateFormat formater = new SimpleDateFormat("dd/MM/yyyy");
    final java.util.Date date = formater.parse("20/01/2009");
    final java.sql.Date sqlDate = new java.sql.Date(date.getTime());
    // initialisation de la connexion (marche bien)
    final Connection cnx = getConnection();
    // requete a executer
    final String query = "select doss.ETAT, doss.NOM, doss.DATE from DOSSIER where doss.ETAT = ? AND doss.NOM = ? AND doss.DATE = ?";
    final PreparedStatement statement = cnx.prepareStatement(query);
    // initialisation des parametres
    statement.setString(1, "TERMINE");
    statement.setString(2, "toto");
    statement.setDate(3, sqlDate);
    final ResultSet result = statement.executeQuery();
    La requête ne renvoie aucun resultat, alors que pourtant la condition se fait sur la bonne colonne et la date passée en paramètre est bien la même que la date en base.

    Quelqu'un aurait-il une idée car la je seche ?
    Merci d'avance

  2. #2
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    ta date est bien la même à la ms près ?
    si tu veux faire des restrictions sur les "jours" et non pas les "dates à la ms près" tu peux utiliser les fonctions de ton SGBD, style TRUNC (uniquement si tu ne cherches pas à faire quelque chose de portable)
    Ignorer c'est aussi croire que l'on sait.
    Merci d'essayer d'écrire correctement.
    Pas de questions techniques par MP SVP.

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Tu as peut-être une partie heures:minutes:secondes dans une de tes dates, peux-tu vérifier avec le déboguer ?
    Sinon, tu peux essayer avec les fonctions YEAR(DATE)=? and MONTH(DATE)=? and DAYOFMONTH(DATE)=?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre régulier
    Homme Profil pro
    responsable technique
    Inscrit en
    Novembre 2002
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : responsable technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 100
    Points : 89
    Points
    89
    Par défaut
    merci pour vos réponses,
    en fait Sql Developper est un filou, il affichait les dates sous forme DD/MM/YYYY mais il y avait bien des heures minutes secondes dans les dates stockées en base donc la comparaison ne marchait pas.
    en utilisant un trunc(laDate, 'DD'), tout rentre dans l'ordre
    merci

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

Discussions similaires

  1. probleme de date avec mktime et gmtime
    Par firejocker dans le forum MFC
    Réponses: 2
    Dernier message: 12/04/2010, 13h57
  2. Acces probleme de Date avec Between
    Par kahya dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 03/05/2007, 16h26
  3. Probleme insertion date avec un champ datetime
    Par locs dans le forum MS SQL Server
    Réponses: 24
    Dernier message: 24/09/2006, 12h19
  4. Probleme de date avec mysql: pas de date par defaut stp!
    Par kenny49 dans le forum Requêtes
    Réponses: 4
    Dernier message: 01/07/2006, 11h25
  5. Probleme de date avec changement d'année
    Par GrisburT dans le forum Oracle
    Réponses: 11
    Dernier message: 30/11/2004, 16h15

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