I MariaDB, CONVERT_TZ() er en indbygget dato- og tidsfunktion, der konverterer en datetime-værdi fra en tidszone til en anden.
Når du kalder funktionen, sender du tre argumenter:tiden, tidszonen, der skal konverteres fra , og den tidszone, der skal konverteres til .
Syntaks
Syntaksen ser sådan ud:
CONVERT_TZ(dt,from_tz,to_tz)
Hvor dt er datetime-udtrykket, from_tz er den tidszone, der skal konverteres fra , og to_tz er den tidszone, der skal konverteres til .
Eksempel
Her er et eksempel:
SELECT CONVERT_TZ('2021-05-10 01:00:00', '+00:00', '+10:00'); Resultat:
+-------------------------------------------------------+
| CONVERT_TZ('2021-05-10 01:00:00', '+00:00', '+10:00') |
+-------------------------------------------------------+
| 2021-05-10 11:00:00 |
+-------------------------------------------------------+ Her er den oprindelige tidszone +00:00, og vi konverterede den til +10:00.
Her er, hvad der sker, hvis vi bruger en anden starttidszone:
SELECT CONVERT_TZ('2021-05-10 01:00:00', '+03:00', '+10:00'); Resultat:
+-------------------------------------------------------+
| CONVERT_TZ('2021-05-10 01:00:00', '+03:00', '+10:00') |
+-------------------------------------------------------+
| 2021-05-10 08:00:00 |
+-------------------------------------------------------+ Navngivne tidszoner
Navngivne tidszoner kan bruges, men det kræver, at de forskellige tidszonetabeller er indlæst.
Her er, hvad der sker, når tidszonetabellerne ikke udfyldt:
SELECT
CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham'); Resultat:
+-------------------------------------------------------------+
| CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham') |
+-------------------------------------------------------------+
| NULL |
+-------------------------------------------------------------+
Resultatet er null , fordi der ikke er nogen tidszonedata i tidszonetabellerne.
Her er den samme forespørgsel igen, men denne gang med data i tidszonetabellerne:
SELECT
CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham'); Resultat:
+-------------------------------------------------------------+
| CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham') |
+-------------------------------------------------------------+
| 2021-05-10 13:45:00 |
+-------------------------------------------------------------+ Dato-tidsværdier uden for intervallet
Ingen konvertering finder sted, hvis værdien falder uden for den understøttede TIMESTAMP interval ('1970-01-01 00:00:01' til '2038-01-19 05:14:07' UTC), når den konverteres fra from_tz til UTC.
Eksempel:
SELECT CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+10:00'); Resultat:
+-------------------------------------------------------+
| CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+10:00') |
+-------------------------------------------------------+
| 2040-05-10 01:00:00 |
+-------------------------------------------------------+ Ugyldige argumenter
Hvis nogen af argumenterne er ugyldige, CONVERT_TZ() returnerer null .
Eksempel:
SELECT CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+90:00'); Resultat:
+-------------------------------------------------------+
| CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+90:00') |
+-------------------------------------------------------+
| NULL |
+-------------------------------------------------------+
I dette tilfælde forsøgte jeg at konvertere datetime-udtrykket til en ugyldig tidszone (+90:00 ), og så null blev returneret.
Nul-argumenter
Hvis et argument er null , resultatet er 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"; Resultat:
+------+------+------+ | 1 | 2 | 3 | +------+------+------+ | NULL | NULL | NULL | +------+------+------+
Manglende argument
Kalder CONVERT_TZ() med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer det i en fejl:
SELECT CONVERT_TZ(); Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'CONVERT_TZ'