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

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

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

Изисква два аргумента; датата и низа за формат. Той също така приема незадължителен трети аргумент, който ви позволява да посочите локала.

Синтаксис

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

DATE_FORMAT(date, format[, locale]) 

Където date е датата, format е низът за формат (вижте приети спецификатори на формат) и locale е незадължителен локал, който да се използва за върнатия формат.

Пример

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

SELECT DATE_FORMAT('2030-01-25 10:30:45', '%W, %D %M %Y'); 

Резултат:

+------------------------------------------------------- ------+| DATE_FORMAT('2030-01-25 10:30:45', '%W, %D %M %Y') |+--------------------- -------------------------------+| петък, 25 януари 2030 г. |+-------------------------------------------------------- ---------+

Ето го отново, но този път с %r за да върнете времето, върнато във формат 12 часа:

SELECT DATE_FORMAT('2030-01-25 10:30:45', '%r'); 

Резултат:

+------------------------------------+| DATE_FORMAT('2030-01-25 10:30:45', '%r') |+---------------------------- --------------+| 10:30:45 AM |+-------------------------------------------------- +

Можем да ги комбинираме, така че да получим часа и датата:

SELECT DATE_FORMAT('2030-01-25 10:30:45', '%r %W, %D %M %Y'); 

Резултат:

+------------------------------------------------------- ---------+| DATE_FORMAT('2030-01-25 10:30:45', '%r %W, %D %M %Y') |+------------------ ------------------------------------+| 10:30:45 ч. петък, 25 януари 2030 г. |+------------------------------------- ------------------+

Езикът за имената на месеците, дните и т.н. се определя от lc_time_names системна променлива. По подразбиране винаги е en_US независимо от настройката за локал на системата. Ето как да видите текущата си настройка.

Аргументът за локал

Започвайки с MariaDB 10.3.2, може да се използва незадължителен трети аргумент за определяне на локала. Когато това е посочено, това прави функцията независима от настройките на сесията.

SELECT DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'es_PR'); 

Резултат:

+------------------------------------------------------- ------+| DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'es_PR') |+--------------------- ------------------------------+| viernes, 25 енеро 2030 |+------------------------------------------------------- ---------+

Ето още няколко локали:

SELECT 
    DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'fr_FR') AS fr_FR,
    DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'hr_HR') AS hr_HR,
    DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'ms_MY') AS fr_FR,
    DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'th_TH') AS th_TH; 

Резултат:

fr_FR:vendredi, 25-ти януари 2030hr_HR:Петък, 25th Siječanj 2030fr_FR:Jumaat, 25th януари 2030th_TH:ศุกร์, 25th Siječanj 2030th_TH:ศุกร์, 25th รุกร์, 25th รมกรมก> 

В този случай последният е тайландски и въпреки че използва тайландски знаци за името на месеца и името на деня, той не променя годината в тайландския календар. Годината 2030 ще бъде 2573 при използване на тайландския календар. Така че предполагам, че предположението е, че ако искате да използвате тайландската година, тогава датата, която преминете, вече ще използва тайландската година.

Текуща дата

Тук предаваме NOW() като аргумент за дата, за да форматирате текущата дата:

SELECT DATE_FORMAT(NOW(), '%r %W, %D %M %Y'); 

Резултат:

+---------------------------------------+| DATE_FORMAT(NOW(), '%r %W, %D %M %Y') |+---------------------------- -----------+| 09:53:00 ч. вторник, 11 май 2021 г. |+------------------------------------- --+

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

Когато се подадат невалидни аргументи, DATE_FORMAT() връща null :

SELECT DATE_FORMAT('Homer', 'Simpson'); 

Резултат:

+--------------------------------+| DATE_FORMAT('Омир', 'Симпсън') |+--------------------------------+| NULL |+---------------------------------+

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

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

SELECT DATE_FORMAT(); 

Резултат:

ГРЕШКА 1064 (42000):Имате грешка във вашия SQL синтаксис; проверете ръководството, което съответства на вашата версия на сървъра на MariaDB за правилния синтаксис, който да използвате близо до ')' на ред 1

И още един пример:

SELECT DATE_FORMAT('2030-05-21'); 

Резултат:

ГРЕШКА 1064 (42000):Имате грешка във вашия SQL синтаксис; проверете ръководството, което съответства на вашата версия на сървъра на MariaDB за правилния синтаксис, който да използвате близо до ')' на ред 1

GET_FORMAT() Функция

Можете също да използвате GET_FORMAT() функция във втория аргумент на DATE_FORMAT() . Това връща пълния форматен низ за даден формат на дата, което ви спестява от необходимостта да помните низа за формат, който да използвате.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как работи PERIOD_DIFF() в MariaDB

  2. MariaDB JSON_VALUE() срещу JSON_QUERY():Каква е разликата?

  3. MariaDB CURRENT_TIME() Обяснено

  4. Как да защитите своята MySQL и MariaDB база данни срещу кибератаки, когато сте в публична мрежа

  5. COUNT() Функция в MariaDB