Tengo un objeto java.util.Date
, y tengo que insertarlo en un campo de fecha y hora en MySQL en el formato UTC
.Java MySQL Timestamp huso horario problemas
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());
Lo que me da la serie de sentencia SQL preparada:
INSERT INTO table (t1, t2) VALUES ('2012-05-09 11:37:08','2012-05-09 11:37:08');
La marca de tiempo devuelto es el mismo sello de tiempo, independientemente de la zona horaria especifico. Está ignorando el objeto Calendario con la zona horaria que especifico. ¿Qué está pasando y qué estoy haciendo mal?
Las zonas horarias no cambian la marca de tiempo. Simplemente cambian lo que se muestra cuando se representa la fecha. – Jeremy
Sí, entiendo que una marca de tiempo es solo un número de milisegundos desde época GMT, independientemente de la zona horaria. Mi problema es que incluso especificando la zona horaria, está representando exactamente la misma fecha de visualización (ver que aunque he especificado diferentes zonas horarias, la fecha fue exactamente igual en el último comando SQL). – Jordan
Creo que esto es lo que está buscando: http://puretech.paawak.com/2010/11/02/how-to-handle-oracle-timestamp-with-timezone-from-java/ – Chris