In MariaDB, CONVERT_TZ() is een ingebouwde datum- en tijdfunctie die een datetime-waarde converteert van de ene tijdzone naar de andere.
Wanneer u de functie aanroept, geeft u drie argumenten door:de tijd, de tijdzone om van . te converteren , en de tijdzone om naar . te converteren .
Syntaxis
De syntaxis gaat als volgt:
CONVERT_TZ(dt,from_tz,to_tz)
Waar dt is de datetime-expressie, from_tz is de tijdzone om van . te converteren , en to_tz is de tijdzone om naar . te converteren .
Voorbeeld
Hier is een voorbeeld:
SELECT CONVERT_TZ('2021-05-10 01:00:00', '+00:00', '+10:00'); Resultaat:
+-------------------------------------------------------+
| CONVERT_TZ('2021-05-10 01:00:00', '+00:00', '+10:00') |
+-------------------------------------------------------+
| 2021-05-10 11:00:00 |
+-------------------------------------------------------+ Hier is de oorspronkelijke tijdzone +00:00, en we hebben deze geconverteerd naar +10:00.
Dit is wat er gebeurt als we een andere starttijdzone gebruiken:
SELECT CONVERT_TZ('2021-05-10 01:00:00', '+03:00', '+10:00'); Resultaat:
+-------------------------------------------------------+
| CONVERT_TZ('2021-05-10 01:00:00', '+03:00', '+10:00') |
+-------------------------------------------------------+
| 2021-05-10 08:00:00 |
+-------------------------------------------------------+ Benoemde tijdzones
Benoemde tijdzones kunnen worden gebruikt, maar hiervoor moeten de verschillende tijdzonetabellen zijn geladen.
Dit is wat er gebeurt als de tijdzonetabellen niet zijn bevolkt:
SELECT
CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham'); Resultaat:
+-------------------------------------------------------------+
| CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham') |
+-------------------------------------------------------------+
| NULL |
+-------------------------------------------------------------+
Het resultaat is null , omdat er geen tijdzonegegevens in de tijdzonetabellen staan.
Hier is dezelfde vraag opnieuw, maar deze keer met gegevens in de tijdzonetabellen:
SELECT
CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham'); Resultaat:
+-------------------------------------------------------------+
| CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham') |
+-------------------------------------------------------------+
| 2021-05-10 13:45:00 |
+-------------------------------------------------------------+ Buiten bereik datum/tijd-waarden
Er vindt geen conversie plaats als de waarde buiten de ondersteunde TIMESTAMP valt bereik ('1970-01-01 00:00:01' naar '2038-01-19 05:14:07' UTC) bij conversie van from_tz naar UTC.
Voorbeeld:
SELECT CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+10:00'); Resultaat:
+-------------------------------------------------------+
| CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+10:00') |
+-------------------------------------------------------+
| 2040-05-10 01:00:00 |
+-------------------------------------------------------+ Ongeldige argumenten
Als een van de argumenten ongeldig is, CONVERT_TZ() retourneert null .
Voorbeeld:
SELECT CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+90:00'); Resultaat:
+-------------------------------------------------------+
| CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+90:00') |
+-------------------------------------------------------+
| NULL |
+-------------------------------------------------------+
In dit geval heb ik geprobeerd de datetime-expressie om te zetten in een ongeldige tijdzone (+90:00 ), en dus null is teruggestuurd.
Nullargumenten
Als een argument null is , het resultaat is 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"; Resultaat:
+------+------+------+ | 1 | 2 | 3 | +------+------+------+ | NULL | NULL | NULL | +------+------+------+
Ontbrekend argument
Aanroepen van CONVERT_TZ() met het verkeerde aantal argumenten, of zonder het doorgeven van argumenten resulteert in een fout:
SELECT CONVERT_TZ(); Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'CONVERT_TZ'