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'