Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Gibt es MySQL-Äquivalent zu Oracles TIMESTAMP WITH TIME ZONE?

Nein, Sie müssen die Daten in zwei Spalten aufteilen, eine mit Datum und Uhrzeit und die andere mit den Zeitzoneninformationen. Aber was Sie in das letztere Feld eingeben, hängt davon ab, was Sie in Oracle gespeichert haben - der TIMESTAMP WITH TIME ZONE-Datentyp kann den TZ-Offset und (optional) die Zeitzonenregion enthalten. Offensichtlich ist letzteres eine Voraussetzung dafür, dass Datum und Uhrzeit semantisch korrekt sind, aber IIRC Oracle erzwingt nicht, dass diese Daten ausgefüllt werden.

Da MySQL den Datentyp nicht hat, wird es sehr schwierig sein, eine MySQL-Funktion zu schreiben, um ihn zu verarbeiten - es ist viel einfacher, eine MySQL-kompatible Darstellung in Oracle zu erstellen, in der der Datentyp unterstützt wird. Sie müssen nur herausfinden, welche Daten Sie tatsächlich haben, und entscheiden, wie Sie sie in MySQL darstellen möchten. Per Konvention bedeutet dies, es in UTC zusammen mit der TZ in einer separaten Spalte zu speichern und es dann bei Auswahl mit der convert_tz-Funktion zu konvertieren (immer von UTC)