Java-MySQL-Timestamp Zeit-zone Probleme

Ich habe eine java.util.Date Objekt, und ich brauche, um es einzufügen in ein datetime-Feld in MySQL in UTC - format.

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());

Gibt mir die vorbereitete SQL-Anweisung-Zeichenfolge:

INSERT INTO table (t1, t2) VALUES ('2012-05-09 11:37:08','2012-05-09 11:37:08');

Den timestamp zurückgegeben, ist der gleiche Zeitstempel unabhängig von der Zeitzone angeben. Es ignoriert die Kalender-Objekt mit Zeitzone, die ich angeben. Was ist Los und was mache ich falsch?

Zeitzonen nicht ändern den Zeitstempel. Sie wechseln nur das, was gezeigt wird, wenn das Datum dargestellt wird.
Ja, ich verstehe, dass ein timestamp ist nur eine Zahl von Millisekunden seit der Epoche in GMT, unabhängig von der Zeitzone. Mein problem ist, dass auch durch die Angabe der Zeitzone, Darstellung der exakt gleichen Datum anzuzeigen (siehe dass obwohl ich angegeben verschiedenen Zeitzonen, Datum erbracht wurde genau das gleiche in der letzten SQL-Befehl).
Ich denke, dies kann sein, was du suchst : puretech.paawak.com/2010/11/02/...

InformationsquelleAutor Jordan | 2012-05-09

Schreibe einen Kommentar