sql >> Database teknologi >  >> RDS >> MariaDB

Hvordan CONVERT_TZ() virker i MariaDB

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'

  1. Kan du ringe til en webservice fra TSQL-kode?

  2. Kan der opstå dødvande med samme adgangsmetode?

  3. SQL :MELLEM vs <=og>=

  4. Sådan viser du tabeller, der er berørt af kaskadesletning