Ho un oggetto java.util.Date
e ho bisogno di inserirlo in un campo datetime in MySQL nel formato UTC
.Java MySQL Problemi relativi al fuso orario con timestamp
java.util.Date date = myDateFromSomewhereElse;
PreparedStatement prep = con.prepareStatement(
"INSERT INTO table (t1, t2) VALUES (?,?)");
java.sql.Timestamp t = new Timestamp(date.getTime());
prep.setTimestamp(1, t, Calendar.getInstance(TimeZone.getTimeZone("PST"));
prep.setTimestamp(2, t, Calendar.getInstance(TimeZone.getTimeZone("UTC"));
System.out.println(prep.toString());
che mi dà la stringa di istruzione SQL preparata:
INSERT INTO table (t1, t2) VALUES ('2012-05-09 11:37:08','2012-05-09 11:37:08');
Il timestamp restituito è lo stesso timestamp indipendentemente dal fuso orario specificata. Ignora l'oggetto Calendar con il fuso orario specificato. Cosa sta succedendo e cosa sto sbagliando?
I fusi orari non modificano il timestamp. Cambiano solo ciò che viene mostrato quando viene visualizzata la data. – Jeremy
Sì, capisco che un timestamp è solo un numero di millisecondi da epoca GMT, indipendentemente dal fuso orario. Il mio problema è che, anche specificando il fuso orario, si esegue il rendering della stessa esatta data di visualizzazione (si veda anche se ho specificato diversi fusi orari, la data è stata resa esattamente la stessa nel comando finale SQL). – Jordan
Penso che questo possa essere quello che stai cercando: http://puretech.paawak.com/2010/11/02/how-to-handle-oracle-timestamp-with-timezone-from-java/ – Chris