MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Jak działa funkcja CONVERT_TZ() w MariaDB

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'

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak działa RTRIM_ORACLE() w MariaDB

  2. MariaDB Z WYJĄTKIEM Operatora wyjaśniono

  3. Porównanie RDS i EC2 do zarządzania MySQL lub MariaDB na AWS

  4. Jak działa operator LIKE w MariaDB

  5. Porównanie wysokiej dostępności bazy danych — replikacja MySQL/MariaDB i Oracle Data Guard