sql >> Database >  >> RDS >> MariaDB

Hoe CONVERT_TZ() werkt in MariaDB

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'

  1. SQL-BEPERKINGEN

  2. De naam van de primaire sleutelbeperking voor meerdere tabellen in de SQL Server-database wijzigen - SQL Server / TSQL-zelfstudie, deel 64

  3. Hoe een externe MySQL-database in PHP te verbinden

  4. Hoe de CREATE VIEW-code voor een weergave in PostgreSQL te zien?