W MariaDB CONVERT_TZ() to wbudowana funkcja daty i godziny, która konwertuje wartość daty i godziny z jednej strefy czasowej na inną.
Gdy wywołujesz funkcję, przekazujesz trzy argumenty:czas, strefę czasową, z której ma zostać przekonwertowana z i strefę czasową do przekonwertowania na .
Składnia
Składnia wygląda tak:
CONVERT_TZ(dt,from_tz,to_tz)
Gdzie dt to wyrażenie daty i godziny, from_tz to strefa czasowa do konwersji z i to_tz to strefa czasowa, w której należy przekonwertować na .
Przykład
Oto przykład:
SELECT CONVERT_TZ('2021-05-10 01:00:00', '+00:00', '+10:00'); Wynik:
+-------------------------------------------------------+
| CONVERT_TZ('2021-05-10 01:00:00', '+00:00', '+10:00') |
+-------------------------------------------------------+
| 2021-05-10 11:00:00 |
+-------------------------------------------------------+ Tutaj oryginalna strefa czasowa to +00:00 i przekonwertowaliśmy ją na +10:00.
Oto, co się stanie, jeśli użyjemy innej początkowej strefy czasowej:
SELECT CONVERT_TZ('2021-05-10 01:00:00', '+03:00', '+10:00'); Wynik:
+-------------------------------------------------------+
| CONVERT_TZ('2021-05-10 01:00:00', '+03:00', '+10:00') |
+-------------------------------------------------------+
| 2021-05-10 08:00:00 |
+-------------------------------------------------------+ Nazwane strefy czasowe
Można użyć nazwanych stref czasowych, ale wymaga to załadowania różnych tabel stref czasowych.
Oto, co się dzieje, gdy tabele stref czasowych nie zaludnione:
SELECT
CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham'); Wynik:
+-------------------------------------------------------------+
| CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham') |
+-------------------------------------------------------------+
| NULL |
+-------------------------------------------------------------+
Wynik to null , ponieważ w tabelach stref czasowych nie ma danych o strefie czasowej.
Oto znowu to samo zapytanie, ale tym razem z danymi w tabelach stref czasowych:
SELECT
CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham'); Wynik:
+-------------------------------------------------------------+
| CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham') |
+-------------------------------------------------------------+
| 2021-05-10 13:45:00 |
+-------------------------------------------------------------+ Wartości daty i godziny poza zakresem
Konwersja nie nastąpi, jeśli wartość wykracza poza obsługiwany TIMESTAMP zakres ('1970-01-01 00:00:01' do '2038-01-19 05:14:07' UTC) po konwersji z from_tz do UTC.
Przykład:
SELECT CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+10:00'); Wynik:
+-------------------------------------------------------+
| CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+10:00') |
+-------------------------------------------------------+
| 2040-05-10 01:00:00 |
+-------------------------------------------------------+ Nieprawidłowe argumenty
Jeśli którykolwiek z argumentów jest nieprawidłowy, CONVERT_TZ() zwraca null .
Przykład:
SELECT CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+90:00'); Wynik:
+-------------------------------------------------------+
| CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+90:00') |
+-------------------------------------------------------+
| NULL |
+-------------------------------------------------------+
W tym przypadku próbowałem przekonwertować wyrażenie daty i godziny na nieprawidłową strefę czasową (+90:00 ), a więc null został zwrócony.
Argumenty zerowe
Jeśli jakikolwiek argument ma wartość null , wynik to 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"; Wynik:
+------+------+------+ | 1 | 2 | 3 | +------+------+------+ | NULL | NULL | NULL | +------+------+------+
Brakujący argument
Wywołanie CONVERT_TZ() z niewłaściwą liczbą argumentów lub bez przekazania jakichkolwiek argumentów powoduje błąd:
SELECT CONVERT_TZ(); Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'CONVERT_TZ'