В 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()
. Това връща пълния форматен низ за даден формат на дата, което ви спестява от необходимостта да помните низа за формат, който да използвате.