Bonjour,
Je cherche à enregistrer un timestamp avec timezone dans ma base de données SQL (postgresql).
Du coté java, j'utilise un java.util.Date. Du coté postgresql, j'utilise un TIMESTAMP WITH TIMEZONE.
Or à chaque fois que j'enregistre une date, c'est la date locale qui est enregistrée en tant que GMT. Exemple :
- Il est 23h37 (ca fais donc 3h que je planche la dessus ^) heure locale
- Quand j'enregistre la date (avec un PreparedStatement et un setTimeStamp), celle-ci apparait dans la base comme "31/05/2014 23:37 GMT" alors qu'elle devrait être à "31/05/2014 21:37 GMT".
J'ai essayé d'ajouter un Calendar avec setTimestamp, mais ça ne change rien. J'ai essayé de convertir la date en GMT avant enregistrement mais n'y suis pas arrivé.
Ce que je ne comprend pas, c'est que le Date reflete le nombre de ms depuis le 01/01/1970 GMT. Donc l'enregistrement en base de cette valeur devrait refleter la même chose.
J'ai chercher dans le forum, j'ai trouvé pas mal de sujet sur l'affichage, mais rien qui puisse m'aider sur l'enregistrement.
Sauriez-vous m'aider sur ce sujet ?
Merci,
un extrait du code que j'utilise (j'ai essayé plein d'autres solutions auparavant, sans succès) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 PreparedStatement req = _cnx.prepareStatement(statement_text); java.util.Calendar cal = java.util.Calendar.getInstance(java.util.TimeZone.getTimeZone("Europe/Paris"),new java.util.Locale("fr","fr")); cal.setTime(new java.util.Date()); java.util.Date datedujour = new Date(); (...) req.setTimestamp(9, new java.sql.Timestamp(datedujour.getTime()));
Partager