В MySQL можете да използвате GET_FORMAT()
функция за връщане на форматиращ низ за предоставените аргументи. Това може да бъде полезно, когато трябва да предоставите низ за форматиране на друга функция, като DATE_FORMAT()
или STR_TO_DATE()
.
Синтаксис
Официалният синтаксис е така:
GET_FORMAT({DATE|TIME|DATETIME}, {'EUR'|'USA'|'JIS'|'ISO'|'INTERNAL'})
Пример 1 – Основна употреба
Ето пример, за да демонстрирате как работи.
SELECT GET_FORMAT(DATE,'USA');
Резултат:
+------------------------+ | GET_FORMAT(DATE,'USA') | +------------------------+ | %m.%d.%Y | +------------------------+
Така че този пример връща форматния низ за САЩ. Вече можем да вземем този форматен низ и да го използваме в различни функции за форматиране на дата.
Като това:
SELECT DATE_FORMAT('2020-03-07', '%m.%d.%Y') AS 'Formatted';
Резултат:
+------------+ | Formatted | +------------+ | 03.07.2020 | +------------+
Можем обаче да предадем тази функция директно на DATE_FORMAT()
функция. Като това:
SELECT DATE_FORMAT('2020-03-07', GET_FORMAT(DATE,'USA')) AS 'Formatted';
Резултат:
+------------+ | Formatted | +------------+ | 03.07.2020 | +------------+
Така че това ни спестява от необходимостта да помним какъв форматен низ да използваме – GET_FORMAT()
прави това за нас.
Пример 2 – Стойности за дата
Този пример изброява всички варианти на втория аргумент, когато първият аргумент е DATE
.
SELECT GET_FORMAT(DATE,'USA') AS 'USA', GET_FORMAT(DATE,'JIS') AS 'JIS', GET_FORMAT(DATE,'ISO') AS 'ISO', GET_FORMAT(DATE,'EUR') AS 'EUR', GET_FORMAT(DATE,'INTERNAL') AS 'INTERNAL';
Резултат:
+----------+----------+----------+----------+----------+ | USA | JIS | ISO | EUR | INTERNAL | +----------+----------+----------+----------+----------+ | %m.%d.%Y | %Y-%m-%d | %Y-%m-%d | %d.%m.%Y | %Y%m%d | +----------+----------+----------+----------+----------+
Пример 3 – Стойности за дата и час
Този пример изброява всички варианти на втория аргумент, когато първият аргумент е DATETIME
.
SELECT GET_FORMAT(DATETIME,'USA') AS 'USA', GET_FORMAT(DATETIME,'JIS') AS 'JIS', GET_FORMAT(DATETIME,'ISO') AS 'ISO', GET_FORMAT(DATETIME,'EUR') AS 'EUR', GET_FORMAT(DATETIME,'INTERNAL') AS 'INTERNAL';
Резултат:
+-------------------+-------------------+-------------------+-------------------+--------------+ | USA | JIS | ISO | EUR | INTERNAL | +-------------------+-------------------+-------------------+-------------------+--------------+ | %Y-%m-%d %H.%i.%s | %Y-%m-%d %H:%i:%s | %Y-%m-%d %H:%i:%s | %Y-%m-%d %H.%i.%s | %Y%m%d%H%i%s | +-------------------+-------------------+-------------------+-------------------+--------------+
Пример 4 – Времеви стойности
Този пример изброява всички варианти на втория аргумент, когато първият аргумент е TIME
.
SELECT GET_FORMAT(TIME,'USA') AS 'USA', GET_FORMAT(TIME,'JIS') AS 'JIS', GET_FORMAT(TIME,'ISO') AS 'ISO', GET_FORMAT(TIME,'EUR') AS 'EUR', GET_FORMAT(TIME,'INTERNAL') AS 'INTERNAL';
Резултат:
+-------------+----------+----------+----------+----------+ | USA | JIS | ISO | EUR | INTERNAL | +-------------+----------+----------+----------+----------+ | %h:%i:%s %p | %H:%i:%s | %H:%i:%s | %H.%i.%s | %H%i%s | +-------------+----------+----------+----------+----------+
Спецификатори на единици
Върнатият форматен низ може да бъде съставен от произволна комбинация от следните спецификатори.
Спецификатор | Описание |
---|---|
%a | Съкратено име на делничен ден (Sun ..Sat ) |
%b | Съкратено име на месеца (Jan ..Dec ) |
%c | Месец, числов (0 ..12 ) |
%D | Ден от месеца с английски суфикс (0th , 1st , 2nd , 3rd , …) |
%d | Ден от месеца, цифров (00 ..31 ) |
%e | Ден от месеца, цифров (0 ..31 ) |
%f | Микросекунди (000000 ..999999 ) |
%H | Час (00 ..23 ) |
%h | Час (01 ..12 ) |
%I | Час (01 ..12 ) |
%i | Минути, числови (00 ..59 ) |
%j | Ден от годината (001 ..366 ) |
%k | Час (0 ..23 ) |
%l | Час (1 ..12 ) |
%M | Име на месеца (Jan ..December ) |
%m | Месец, цифров (00 ..12 ) |
%p | AM или PM |
%r | Време, 12 часа (hh:mm:ss последвано от AM или PM ) |
%S | Секунди (00 ..59 ) |
%s | Секунди (00 ..59 ) |
%T | Време, 24 часа (hh:mm:ss ) |
%U | Седмица (00 ..53 ), където неделя е първият ден от седмицата; WEEK() режим 0 |
%u | Седмица (00 ..53 ), където понеделник е първият ден от седмицата; WEEK() режим 1 |
%V | Седмица (01 ..53 ), където неделя е първият ден от седмицата; WEEK() режим 2; използва се с %X |
%v | Седмица (01 ..53 ), където понеделник е първият ден от седмицата; WEEK() режим 3; използва се с %x |
%W | Име на деня от седмицата (Sunday ..Sat ) |
%w | Ден от седмицата (0 =Неделя..6 =събота) |
%X | Година за седмицата, в която неделя е първият ден от седмицата, число, четири цифри; използва се с %V |
%x | Година за седмицата, където понеделник е първият ден от седмицата, число, четири цифри; използва се с %v |
%Y | Година, число, четири цифри |
%y | Година, число (две цифри) |
%% | Литерал % символ |
% | x , за всеки „x ” не е изброено по-горе |