MariaDB
 sql >> база данни >  >> RDS >> MariaDB

Как работи CONVERT_TZ() в MariaDB

В MariaDB, CONVERT_TZ() е вградена функция за дата и час, която преобразува стойност за дата и час от една часова зона в друга.

Когато извикате функцията, вие предавате три аргумента:времето, часовата зона за преобразуване от и часовата зона, която да преобразувате в .

Синтаксис

Синтаксисът е така:

CONVERT_TZ(dt,from_tz,to_tz)

Където dt е изразът за дата и час, from_tz е часовата зона за преобразуване от и to_tz е часовата зона за преобразуване в .

Пример

Ето един пример:

SELECT CONVERT_TZ('2021-05-10 01:00:00', '+00:00', '+10:00');

Резултат:

+-------------------------------------------------------+
| CONVERT_TZ('2021-05-10 01:00:00', '+00:00', '+10:00') |
+-------------------------------------------------------+
| 2021-05-10 11:00:00                                   |
+-------------------------------------------------------+

Тук оригиналната часова зона е +00:00 и ние я преобразувахме в +10:00.

Ето какво се случва, ако използваме различна начална часова зона:

SELECT CONVERT_TZ('2021-05-10 01:00:00', '+03:00', '+10:00');

Резултат:

+-------------------------------------------------------+
| CONVERT_TZ('2021-05-10 01:00:00', '+03:00', '+10:00') |
+-------------------------------------------------------+
| 2021-05-10 08:00:00                                   |
+-------------------------------------------------------+

Наименувани часови зони

Могат да се използват наименувани часови зони, но това изисква различните таблици с часови зони да са заредени.

Ето какво се случва, когато таблиците с часовите зони не са попълнено:

SELECT 
CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham');

Резултат:

+-------------------------------------------------------------+
| CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham') |
+-------------------------------------------------------------+
| NULL                                                        |
+-------------------------------------------------------------+

Резултатът е null , тъй като в таблиците на часовите зони няма данни за часовите зони.

Ето отново същата заявка, но този път с данни в таблиците с часовите зони:

SELECT 
CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham');

Резултат:

+-------------------------------------------------------------+
| CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham') |
+-------------------------------------------------------------+
| 2021-05-10 13:45:00                                         |
+-------------------------------------------------------------+

Стойности за дата и време са извън обхвата

Няма да се извърши преобразуване, ако стойността е извън поддържания TIMESTAMP диапазон ('1970-01-01 00:00:01' до '2038-01-19 05:14:07' UTC) при преобразуване от from_tz до UTC.

Пример:

SELECT CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+10:00');

Резултат:

+-------------------------------------------------------+
| CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+10:00') |
+-------------------------------------------------------+
| 2040-05-10 01:00:00                                   |
+-------------------------------------------------------+

Невалидни аргументи

Ако някой от аргументите е невалиден, CONVERT_TZ() връща null .

Пример:

SELECT CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+90:00');

Резултат:

+-------------------------------------------------------+
| CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+90:00') |
+-------------------------------------------------------+
| NULL                                                  |
+-------------------------------------------------------+

В този случай се опитах да конвертирам израза datetime в невалидна часова зона (+90:00 ), и така null беше върнат.

Нулеви аргументи

Ако някой аргумент е null , резултатът е 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";

Резултат:

+------+------+------+
| 1    | 2    | 3    |
+------+------+------+
| NULL | NULL | NULL |
+------+------+------+

Липсващ аргумент

Извикване на CONVERT_TZ() с грешен брой аргументи или без подаване на аргументи води до грешка:

SELECT CONVERT_TZ();

Резултат:

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. 4 функции, които връщат минутите от времева стойност в MariaDB

  2. Справяне с MySQL продължителни заявки

  3. Как работи SHOW CHARACTER SET в MariaDB

  4. Преминаване към MariaDB Backup

  5. Как работи LOG() в MariaDB