Zeitzonen unabhängigen Timestamp in DB speichern

  • Themenstarter Themenstarter Markorieser
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
M

Markorieser

Gast
Ich will in eine kleine Datenbank den aktuellen Zeitpunkt speichern. Nur weis ich nicht welchen Datentyp ich nehmen soll damit dies Zeitzonenunabhängig geschieht. Ich dachte daran in der MySQL-DB ein "Date"-Feld anzulegen und die Werte mittels java.util.Date da reinzuspeichern. Was mich halt verwirrt ist das java.util.Date mir sowas erzeugt:

Fri Nov 10 11:08:35 CET 2006

Ist das ok so oder soll ich lieber was anderes nehmen für die DB?
 
ein Datum hat immer einen internen Zustand und einen angezeigten,
der standardmäßig der lokalen Zeitzone entspricht, ansonsten der gewählten Zeitzone

ich vermute (!), dass die interne Darstellung universell ist,
also die Zeit in Millisekunden seit 1.1.1970 in London 0 Uhr,
diese Zeit kommt dann auch in die Datenbank, unabhängig von der Zeitzone,

wenn du die Daten ausliest dann wird je nach Zeitzone für die Darstellung irgendwas angezeigt,

wie gesagt, weitgehend nur vermutet, aber auch eben durch einen Test in MySQL bestätigt:
um 11.58 einen Datensatz eingefügt (allerdings nicht mit Java sondern CURRENT_TIME), 11.58 wird angezeigt

MySQL ausgeschaltet, Windowszeitzone geändert,
MySQL wieder an, Query Browser zeigt 15:58 in der DB
(aktuelle Windowszeit: 11.58 in der anderen Zeitzone)
 
Danke für deine Antwort. Also macht es nichts aus wenn mein Programm einen Zeitpunkt erstellt mit :

Date d1 = new Date(System.currentTimeMillis());
this.speichern(d1);

und dann in die DB speichert? Oder gibt es andere Tipps und Kniffe um Zeitpunkte zu sichern in eine DB?
 
mach ein datetime-feld in der db. dann kannst du als wert "now()" übergeben und die db speichert den aktuellen timestamp
 
DP hat gesagt.:
mach ein datetime-feld in der db. dann kannst du als wert "now()" übergeben und die db speichert den aktuellen timestamp
Wie funktioniert das mit dem "now()" ? Hast du mir da ein kleines Beispiel?
 
Markorieser hat gesagt.:
DP hat gesagt.:
mach ein datetime-feld in der db. dann kannst du als wert "now()" übergeben und die db speichert den aktuellen timestamp
Wie funktioniert das mit dem "now()" ? Hast du mir da ein kleines Beispiel?

angenopmmen du hast ne tabelle t1 mit feld id vom typ int (autoincrement) und feld datum vom typ datetime.

dann sieht dein query so aus:

insert into t1 (id, datum) values(null, now());
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben