MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Wie CONVERT_TZ() in MariaDB funktioniert

In MariaDB CONVERT_TZ() ist eine integrierte Datums- und Uhrzeitfunktion, die einen datetime-Wert von einer Zeitzone in eine andere umwandelt.

Wenn Sie die Funktion aufrufen, übergeben Sie drei Argumente:die Zeit, die Zeitzone, von der konvertiert werden soll von , und die Zeitzone, die in konvertiert werden soll .

Syntax

Die Syntax sieht so aus:

CONVERT_TZ(dt,from_tz,to_tz) 

Wobei dt ist der datetime-Ausdruck, from_tz ist die Zeitzone, aus der konvertiert werden soll von , und to_tz ist die Zeitzone, die in konvertiert werden soll .

Beispiel

Hier ist ein Beispiel:

SELECT CONVERT_TZ('2021-05-10 01:00:00', '+00:00', '+10:00'); 

Ergebnis:

+---------------------------------------------- ---------+| CONVERT_TZ('2021-05-10 01:00:00', '+00:00', '+10:00') |+------------------ ------------------------------------+| 2021-05-10 11:00:00 |+-------------------------------------------------- ------------------+

Hier ist die ursprüngliche Zeitzone +00:00 und wir haben sie in +10:00 konvertiert.

Folgendes passiert, wenn wir eine andere Startzeitzone verwenden:

SELECT CONVERT_TZ('2021-05-10 01:00:00', '+03:00', '+10:00'); 

Ergebnis:

+---------------------------------------------- ---------+| CONVERT_TZ('2021-05-10 01:00:00', '+03:00', '+10:00') |+------------------ ------------------------------------+| 2021-05-10 08:00:00 |+-------------------------------------------------- ------------------+

Benannte Zeitzonen

Benannte Zeitzonen können verwendet werden, aber dazu müssen die verschiedenen Zeitzonentabellen geladen worden sein.

Folgendes passiert, wenn die Zeitzonentabellen nicht sind ausgefüllt:

SELECT 
CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham'); 

Ergebnis:

+---------------------------------------------- ---------------+| CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pazifik/Chatham') |+----------------------- --------------------------------------+| NULL |+------------------------------------------------------------ --------------+

Das Ergebnis ist null , da die Zeitzonentabellen keine Zeitzonendaten enthalten.

Hier ist dieselbe Abfrage noch einmal, aber diesmal mit Daten in den Zeitzonentabellen:

SELECT 
CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham'); 

Ergebnis:

+---------------------------------------------- ---------------+| CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pazifik/Chatham') |+----------------------- --------------------------------------+| 2021-05-10 13:45:00 |+--------------------------------------------------- -----------------------+

Datetime-Werte außerhalb des zulässigen Bereichs

Es findet keine Konvertierung statt, wenn der Wert außerhalb des unterstützten TIMESTAMP liegt Bereich ('1970-01-01 00:00:01' bis '2038-01-19 05:14:07' UTC), wenn sie von from_tz nach UTC.

Beispiel:

SELECT CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+10:00'); 

Ergebnis:

+---------------------------------------------- ---------+| CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+10:00') |+------------------ ------------------------------------+| 2040-05-10 01:00:00 |+--------------------------------------------------- ------------------+

Ungültige Argumente

Wenn eines der Argumente ungültig ist, CONVERT_TZ() gibt null zurück .

Beispiel:

SELECT CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+90:00'); 

Ergebnis:

+---------------------------------------------- ---------+| CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+90:00') |+------------------ ------------------------------------+| NULL |+------------------------------------------------------------ --------+

In diesem Fall habe ich versucht, den datetime-Ausdruck in eine ungültige Zeitzone umzuwandeln (+90:00 ), also null wurde zurückgegeben.

Null-Argumente

Wenn irgendein Argument null ist , ist das Ergebnis null :

SELECT 
    CONVERT_TZ(null, '+00:00', '+90:00') AS "1",
    CONVERT_TZ('2021-05-10 01:00:00', null, '+90:00') AS "2",
    CONVERT_TZ('2021-05-10 01:00:00', '+00:00', null) AS "3"; 

Ergebnis:

+------+------+------+| 1 | 2 | 3 |+------+------+------+| NULL | NULL | NULL |+------+------+------+

Fehlendes Argument

Aufruf von CONVERT_TZ() mit der falschen Anzahl von Argumenten oder ohne Übergabe von Argumenten führt zu einem Fehler:

SELECT CONVERT_TZ(); 

Ergebnis:

FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion „CONVERT_TZ“