JDBC/MySQL: timestamp Speichern immer mit UTC

Ich würde gerne speichern, wird ein timestamp in die Datenbank ohne Konvertierung in die lokale Zeitzone von jdbc-Treiber. Derzeit nur MySQL und PostgreSQL sind für mich wichtig, aber ich würde mich freuen, wenn es eine Datenbank-unabhängige Lösung.

Beispiel:

// i want that to be saved as 1970-01-01 00:00:00
TimeStamp ts = new java.sql.Timestamp(0);

// gets transformed to local time by jdbc driver (in my case to 1970-01-01 01:00:00)
st.setTimestamp(0, new java.sql.Timestamp(0));

// only works using postgres (mysql connector seems to ignore the calendar)
// postgres => 1970-01-01 00:00:00
// mysql => 1970-01-01 01:00:0
Calendar calutc = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
st.setTimestamp(0, new java.sql.Timestamp(0), utccal);

Ich schon versucht zu berechnen, die einen timestamp-Wert verwandelt, um den richtigen Wert (zum Beispiel -3600000 => 1970-01-01 00:00:00 Uhr in meiner Zeitzone), aber das funktioniert nicht mit postgres auf Termine in der Nähe des day-light saving time changes.

InformationsquelleAutor Werzi2001 | 2013-03-04
Schreibe einen Kommentar