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 :

[JDBC]setDate() et Heure


Sujet :

JDBC Java

  1. #1
    Membre Expert Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Par défaut [JDBC]setDate() et Heure
    Bonjour,

    Voila ma requete simplifiée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    requete = insert into table1 (date_heure) values (?)
    Le code Java de l'execution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    dateDebTrt = new java.sql.Date(new java.util.Date().getTime());
     
    pStatement = conn.prepareStatement(requete); 
     
    int index = 1;
    pStatement.setDate(index++, dateDebTrt);
     
    pStatement.executeUpdate();
    pStatement.close();

    Mon problème est que dans ma table, j'ai la date qui est bien renseignée mais sans l'heure. Hors je souhaiterai avoir l'heure aussi. Et je ne veux pas utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    requete = insert into table1 (date_heure) values (sysdate)
    qui fonctionne et me met bien l'heure car j'ai besoin de la valeur de cette date.

    Mon champs date_heure est du type sql DATE.

    Merci d'avance.

  2. #2
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    je pense qu'il faut que dans ta table ce soit un TIMESTAMP plutot pour avoir date et heure ...

  3. #3
    Membre Expert Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Par défaut
    Normalement en DATE je peux avoir l'heure vu que si je met sysdate dans ma requete il me met la date et l'heure dans ma colonne.
    De plus je ne peux en aucun cas changer le type de ma colonne.

  4. #4
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    ok

    et le "dateDebTrt" il a la bonne valeur ? (avec l'heure je veux dire ?)

    parce que sinon je vois pas trop ...

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Normalement les champs de type SQL DATE ne possèdent pas d'heure. C'est pourquoi la classe java.sql.Date ne comporte pas ces information.
    Tu dois utiliser la classe java.sql.Timestamp et la méthode setTimestamp() pour pouvoir passer la date et l'heure dans la requete

    a++

  6. #6
    Membre Expert Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Par défaut
    Merci pour l'insertion ça fonctionne par contre j'ai un autre problème lorsque je veux remettre à jour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    String requete = 
          "update table1 set autre_col=sysdate, where date_heure=?";
     
        try
        {
          pStatement = conn.prepareStatement(requete); 
     
          int index = 1;
          pStatement.setTimestamp(index++, dateDebTrt);
     
          pStatement.executeUpdate();
          pStatement.close();
     
        }
    J'ai bien vérifie que dateDebTrt a bien la meme valeur que lors de l'insert initial. Mais il ne fait pas la mise à jour.
    J'imagine que lors de l'insertion il doit convertir le timestamp en date d'une façon ou d'une autre et il ne le fait pas lors du test d'égalite.
    J'ai essaye d'ajouter des to_date pour forcer le format mais ça ne fonctionne pas (ou alors je les ai pas mis comme il fallait).

    Drizzt mais quelle idée de mettre des DATE alors qu'on veut l'heure ...

  7. #7
    Membre Expert Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Par défaut
    Bon trouve !

    En gros pour le test d'égalite je reutilise setDate et je met dans mon test d'égalite des to_date avec le format date/heure.
    Si je laissait setTimestamp pas moyen de faire marcher l'égalite, certainement car le champs mis à jour étant du Date, meme si à l'origine j'avais fait un setTimestamp, Oracle avait du effectuer une transformation tout seul.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 14/05/2009, 12h04
  2. Réponses: 3
    Dernier message: 21/04/2006, 12h15
  3. [JDBC] manipulation des dates/heures en Java
    Par kurkLord dans le forum JDBC
    Réponses: 6
    Dernier message: 09/08/2004, 12h49
  4. [CR ?] Somme d'heure sous Crystal ?
    Par Peter PARKER dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 17/04/2003, 16h24
  5. Réponses: 11
    Dernier message: 23/07/2002, 14h33

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