[JDBC]ecart entre mes date en BD et JAVA
Marc
-
Marc -
Marc -
Bonjour,
J'utilise une table SQL simple dans laquelle, il y a une colonne de format DATE, et ou les valeurs sont représentées comme ceci:
2012-04-14
Elles sont associées a une colonne ID int Identity(1,1) en clé primaire
J'utilise une interface JAVA Swing (via un Jtable) qui affiche ces dates, et ou je peux modifier, supprimer et ajouter des dates, le tout via PreparedStatement. Aucune erreur de compilation détectée, mais dans l'affichage j'ai continuellement un écart de 2 jours...
Exemple:
J'ajoute sur mon interface, une date: le 15/04/2012 (il est ici dans un JText en String)
L'ajout se passe bien, et lorsque je fais un select sur SQL Serveur, je la voies qui s'est bien ajoutée sous le format 2012-04-15.
Lorsque je rafraichit l'affichage sur la Jtable pour faire apparaitre cette dernière, je la vois bien grâce a son ID, mais je lis 2012-04-13.
Quelque soit la date entrée, lors de l'affichage dans la Jtable (même en println d'ailleurs), la date s'affiche en perdant 2 jours par rapport à celle en base de données.
Je n'arrive pas a trouver où est le problème, si quelqu'un peut m'aider, je lui en serais reconnaissant.
Merci d'avance,
Marc.
J'utilise une table SQL simple dans laquelle, il y a une colonne de format DATE, et ou les valeurs sont représentées comme ceci:
2012-04-14
Elles sont associées a une colonne ID int Identity(1,1) en clé primaire
J'utilise une interface JAVA Swing (via un Jtable) qui affiche ces dates, et ou je peux modifier, supprimer et ajouter des dates, le tout via PreparedStatement. Aucune erreur de compilation détectée, mais dans l'affichage j'ai continuellement un écart de 2 jours...
Exemple:
J'ajoute sur mon interface, une date: le 15/04/2012 (il est ici dans un JText en String)
L'ajout se passe bien, et lorsque je fais un select sur SQL Serveur, je la voies qui s'est bien ajoutée sous le format 2012-04-15.
Lorsque je rafraichit l'affichage sur la Jtable pour faire apparaitre cette dernière, je la vois bien grâce a son ID, mais je lis 2012-04-13.
Quelque soit la date entrée, lors de l'affichage dans la Jtable (même en println d'ailleurs), la date s'affiche en perdant 2 jours par rapport à celle en base de données.
Je n'arrive pas a trouver où est le problème, si quelqu'un peut m'aider, je lui en serais reconnaissant.
Merci d'avance,
Marc.
A voir également:
- [JDBC]ecart entre mes date en BD et JAVA
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
4 réponses
Est-ce que tu utilises java.util.Date ou java.sql.Date ? A priori c'est la deuxième que tu devrais utiliser, en faisant bien attention de mettre l'heure et la minute à 0 si tu ne t'en sers pas.
Bonjour KX.
Non je n'utilse pas de format DATE dans mon appli JAVA. Je la transforme en String ainsi (j'ai essayé de changer le preparedstatement en statement mais le resultat est le meme)
Non je n'utilse pas de format DATE dans mon appli JAVA. Je la transforme en String ainsi (j'ai essayé de changer le preparedstatement en statement mais le resultat est le meme)
... Connection con = connectDB; //petite methode qui etablie la connexion JDBC Statement stmt = connexion.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet rs = stmt.executeQuery("SELECT * FROM MesDates"); while (rs.next()) { Vector v = new Vector(); v.add(rs.getInt("ID"); v.add(rs.getString("DATES")); JTableDatesModel.addRow(v); ... }
Je viens de faire un petit essais en faisant ainsi :
Le probleme reste le meme ici aussi, je recupere des dates qui ont 2 jours de moins que celles qui sont dans la base de donnée.
... while (rs.next()) { java.sql.Date maDate = rs.getDate("DATE"); System.out.println(maDate) } ...
Le probleme reste le meme ici aussi, je recupere des dates qui ont 2 jours de moins que celles qui sont dans la base de donnée.
Bon ben j'ai fini par résoudre le problème en trichant...
J'ai changé ma requête de :
en
c'est pas tres propre, mais vu que je n'arrive pas a atteindre la source du probleme, je m'en contenterais ^^.
Merci KX pour m'avoir lu :)
J'ai changé ma requête de :
SELECT * FROM MesDates
en
SELECT ID, DATEADD(DAY, 2, DATE) AS DATE FROM MesDates
c'est pas tres propre, mais vu que je n'arrive pas a atteindre la source du probleme, je m'en contenterais ^^.
Merci KX pour m'avoir lu :)