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 :

Récupération de la date Oracle en Java


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Points : 54
    Points
    54
    Par défaut Récupération de la date Oracle en Java
    Bonjour,

    J'ai le code java suivant:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    public Vector getEAIEvents() {
        boolean bHasNext = false;
        Vector vReturn = new Vector();
     
    [....]
        cEAIEventConnection = DriverManager.getConnection(sDatabaseURL,
          sDatabaseLogin, sDatabasePassword);
    [....]
     
          Statement stmt = cEAIEventConnection.createStatement();
          ResultSet set = stmt.executeQuery("SELECT * FROM TABLE");
          bHasNext = set.next();
          while (bHasNext) {
     
    [....]
    //Pour un enregistrement trouvé, parcourt de ses différents champs et traitement pour chacun des types de champs
    [....]
     
            else if (oTemp instanceof Date) {
              Timestamp temp = new Timestamp( ( (Date) oTemp).getTime());
              oMessage[nMessageIndex].sHeader[nHeaderIndex] = Tools.ftTime(Tools.
                  EAI_DATE_PATTERN, temp);
            }
        }
    }
    La méthode ftTime et la variable EAI_DATE_PATTERN sont définis ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      public static String ftTime(String sDateFormat, Timestamp tsCurrentTime) {
        try {
          SimpleDateFormat sdfFormatter = new SimpleDateFormat(sDateFormat);
          return (sdfFormatter.format(tsCurrentTime));
        } catch (Exception e) {
          System.err.println("date format is not valid, returning blank : " + e.getMessage());
          return (""); // return empty string since format is not valid
        }
      }
     
      public final static String EAI_DATE_PATTERN = "dd/MM/yyyy HH:mm:ss";
    Cependant, au final, la chaine de caractère retournée par la fonction ftTime ne contient pas les heures et minutes, seulement la date!

    Comment faut il procéder pour récupérer proprement ces champs?

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    Personne ne peut m'aider?

    J'ai oublié de préciser que la base de données cible est une base Oracle 10G.

  3. #3
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Citation Envoyé par Lex92 Voir le message
    Personne ne peut m'aider?

    J'ai oublié de préciser que la base de données cible est une base Oracle 10G.
    Salut

    Quelle classe Date utilise tu dans ton code? java.util.Date ou java.sql.Date?

    Comment obtient tu la variable oTemp?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    Dans mon code, j'utilise la classe java.util.Date. J'avais déjà fait des tests avec java.sql.Date mais cela n'avait rien changé. Je vais refaire les tests quand même pour être sûr.

    Quant à l'objet oTemp, je l'obtiens en faisant un getObject(nom_du_champ) sur mon objet set qui est de type ResultSet.

    Enfin, quand je déroule le traitement à l'aide de l'outil de débugage, un point d'arrêt sur la ligne où l'on teste si oTemp est de type Date me donne, quand oTemp est effectivement de type Date, une valeur pour l'objet oTemp de 1203980400000. La présence des 0 semblerait donc dire que l'heure et la minute ne sont pas présents dans la date récupérée par la requête SQL ou je me trompe? Cette date est exprimée en millisecondes?

  5. #5
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    T'a essayé de récupérer directement un Timestamp du resultset?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Timestamp oTemp = set.getTimestamp(nom_du_champ);
    Comme ça t'aurais direct un Timestamp.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    C'est marrant, entre temps que tu me proposes cette solution, j'ai fait encore quelques recherches et j'ai essayé justement de faire un getTimestamp, et ça marche!

    J'ai fait une condition sur le set.getObject en vérifiant si c'est une instance de java.sql.Date, et le cas échéant j'ai remplacé le set.getObject par set.getTimestamp.

    Merci pour ton aide

  7. #7
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Citation Envoyé par Lex92 Voir le message
    C'est marrant, entre temps que tu me proposes cette solution, j'ai fait encore quelques recherches et j'ai essayé justement de faire un getTimestamp, et ça marche!

    J'ai fait une condition sur le set.getObject en vérifiant si c'est une instance de java.sql.Date, et le cas échéant j'ai remplacé le set.getObject par set.getTimestamp.

    Merci pour ton aide
    Bah de rien, a priori t'as trouvé tout seul.

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

Discussions similaires

  1. [ ORACLE ][ STRUTS ] [ JAVA ] maximum open cursor
    Par LoulouFifi dans le forum Struts 1
    Réponses: 21
    Dernier message: 30/03/2011, 11h52
  2. Réponses: 3
    Dernier message: 24/09/2008, 16h23
  3. Récupérer champ DATE Oracle en Java
    Par Mil17 dans le forum JDBC
    Réponses: 6
    Dernier message: 02/09/2008, 14h50
  4. Récupération d'une liste de structures Oracle via Java
    Par MagikMarcel dans le forum Langage
    Réponses: 2
    Dernier message: 29/06/2006, 16h34
  5. [Sybase] Récupération de la date système
    Par atos dans le forum Sybase
    Réponses: 2
    Dernier message: 03/03/2004, 14h29

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