Hallo Dedlfix!
Du überlässt das Zeitzonenhandling dem DMBS, verwendest TIMESTAMPs und teilst beim Verbindungsaufbau immer mit, welche Zeitzone du verwendest.
Sowas in der Art habe ich eh schon gesucht, aber nicht gefunden. Mein momentaner Virbindungsaufbau (mit mysqli) sieht so aus:
$db=@new mysql('mysql5.example.com','db_foo','password','db_foo');
$db->set_charset('utf8');
Was für ein Kommando muss ich da jetzt noch darunter schreiben, um meine gewünschte Zeitzone festzulegen? Und wäre das dann so, dass wenn ein Zeitpunkt als 14:00 UTC gespeichrt ist und ich hier zB. Athen als Zeitzone nehme, dann beim Abruf ein 17:00 ausgegeben wird? Oder hab ich das falsch verstanden?
Du kannst also durchaus TIMESTAMP nehmen, beim Verbindungsaufbau deine Zeitzone festlegen und dann mit NOW() arbeiten. Intern abgelegt wird dann der zugehörige UTC-Wert.
Es heißt dauernd, dass beim Timestamp in UTC gespeichrt wird. Aber wie kann das sein? Meine Timestamps sind immer aus meiner Zeitzone, also momentan mitteleuropäische Sommerzeit. Von einer UTC Speicherung sehe ich da weit und breit nichts. Wenn Timestamps in UTC speichern und ich erstelle um 18:00 Uhr einen neuen Datensatz, dann müsste doch beim Timestamp ein 16:00 Uhr stehen!?
Und noch etwas ist mir in diesem Zusammenhang unklar:
Wenn ich mit phpMyAdmin eine Timestamp Spalte erstelle und weder das Häkchen bei "Current-Timestamp" setze, noch bei den Extras das "auto_increment" einstelle, dann wird _trotzdem_ bei jedem neuen Datensatz automatisch ein Zeotstempel gesetzt. Wieso?
Danke für die Geduld und hoffentlich weitere Hilfe!
MfG
Hugo Egon Balder