22 Stimmen

SQLite: CURRENT_TIMESTAMP liefert die falsche Zeit/Stunde

Frage von SmartUser | Letztes Update am 23.11.2023 | Erstellt am 24.03.2017

Ich möchte in einer SQLite-Datenbank die aktuelle Zeit speichern. Dazu habe ich die Konstante CURRENT_TIMESTAMP entdeckt, die mir eigentlich genau diese Zeit liefern sollte.

Jedoch ist die Zeit immer genau um eine Stunde verschoben. Es ist egal ob ich mit dem Default-Wert einer Spalte arbeite...

CREATE TABLE d (dat DATETIME DEFAULT CURRENT_TIMESTAMP, ...);

...oder den Wert im Nachhinein setze:

UPDATE d SET dat = CURRENT_TIMESTAMP WHERE ...;

In beiden Fällen kommt es zu dieser Zeitverschiebung und ich erhalte eine falsche Zeit zurück wenn ich versuche die Werte auszulesen. Das merkwürdige ist, dass die Minuten immer stimmen, die Stunde aber falsch ist. Was kann man da machen?

AntwortenPositivNegativ
2Beste Antwort2 Stimmen

SQLite speichert die Zeit von CURRENT_TIMESTAMP als UTC/GMT-Zeit ab (Coordinated Universal Time / Greenwich Mean Time). Die Zeit wird also unabhängig von der jeweiligen Zeitzone gespeichert.

Beim Auslesen musst du die Zeit daher in deine aktuelle lokale Zeit (localtime) umrechnen, so dass Zeitzone und Sommerzeit/Winterzeit beachtet werden.

Das geht so:

SELECT DATETIME(dat, 'localtime') FROM tab;

Hier lesen wir die Spalte "dat" aus der Tabelle "tab" aus.

Ein Vorteil dieser Art der Speicherung ist, dass die Speicherung immer gleich ist und nicht von dem Standort oder der jeweiligen Zeitzone abhängt.
Letztes Update am 23.11.2023 | Erstellt am 24.03.2017

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

PHP: Zeit und Performance messen

Tutorial | 0 Kommentare

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.