V MySQL můžete použít GET_FORMAT()
funkce, která vrátí formátovací řetězec pro zadané argumenty. To může být užitečné, když potřebujete zadat formátovací řetězec jiné funkci, jako je DATE_FORMAT()
nebo STR_TO_DATE()
.
Syntaxe
Oficiální syntaxe vypadá takto:
GET_FORMAT({DATE|TIME|DATETIME}, {'EUR'|'USA'|'JIS'|'ISO'|'INTERNAL'})
Příklad 1 – Základní použití
Zde je příklad demonstrující, jak to funguje.
SELECT GET_FORMAT(DATE,'USA');
Výsledek:
+------------------------+ | GET_FORMAT(DATE,'USA') | +------------------------+ | %m.%d.%Y | +------------------------+
Tento příklad tedy vrací formátovací řetězec pro USA. Nyní můžeme vzít tento formátovací řetězec a použít jej v různých funkcích formátování data.
Takhle:
SELECT DATE_FORMAT('2020-03-07', '%m.%d.%Y') AS 'Formatted';
Výsledek:
+------------+ | Formatted | +------------+ | 03.07.2020 | +------------+
Tuto funkci však můžeme také předat přímo do DATE_FORMAT()
funkce. Takhle:
SELECT DATE_FORMAT('2020-03-07', GET_FORMAT(DATE,'USA')) AS 'Formatted';
Výsledek:
+------------+ | Formatted | +------------+ | 03.07.2020 | +------------+
Díky tomu si nebudeme muset pamatovat, jaký formátovací řetězec použít – GET_FORMAT()
dělá to za nás.
Příklad 2 – Hodnoty data
Tento příklad uvádí všechny varianty druhého argumentu, když je prvním argumentem 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';
Výsledek:
+----------+----------+----------+----------+----------+ | USA | JIS | ISO | EUR | INTERNAL | +----------+----------+----------+----------+----------+ | %m.%d.%Y | %Y-%m-%d | %Y-%m-%d | %d.%m.%Y | %Y%m%d | +----------+----------+----------+----------+----------+
Příklad 3 – Hodnoty data a času
Tento příklad uvádí všechny varianty druhého argumentu, když je prvním argumentem 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';
Výsledek:
+-------------------+-------------------+-------------------+-------------------+--------------+ | 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 | +-------------------+-------------------+-------------------+-------------------+--------------+
Příklad 4 – Časové hodnoty
Tento příklad uvádí všechny varianty druhého argumentu, když je prvním argumentem 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';
Výsledek:
+-------------+----------+----------+----------+----------+ | USA | JIS | ISO | EUR | INTERNAL | +-------------+----------+----------+----------+----------+ | %h:%i:%s %p | %H:%i:%s | %H:%i:%s | %H.%i.%s | %H%i%s | +-------------+----------+----------+----------+----------+
Specifikátory jednotek
Vrácený formátovací řetězec může být tvořen libovolnou kombinací následujících specifikátorů.
Specifikátor | Popis |
---|---|
%a | Zkrácený název dne v týdnu (Sun ..Sat ) |
%b | Zkrácený název měsíce (Jan ..Dec ) |
%c | Měsíc, numerický (0 ..12 ) |
%D | Den v měsíci s anglickou příponou (0th , 1st , 2nd , 3rd , …) |
%d | Den v měsíci, číselný údaj (00 ..31 ) |
%e | Den v měsíci, číselný údaj (0 ..31 ) |
%f | Mikrosekundy (000000 ..999999 ) |
%H | Hodina (00 ..23 ) |
%h | Hodina (01 ..12 ) |
%I | Hodina (01 ..12 ) |
%i | Minuty, číselné (00 ..59 ) |
%j | Den v roce (001 ..366 ) |
%k | Hodina (0 ..23 ) |
%l | Hodina (1 ..12 ) |
%M | Název měsíce (January ..December ) |
%m | Měsíc, numerický (00 ..12 ) |
%p | AM nebo PM |
%r | Čas, 12 hodin (hh:mm:ss následuje AM nebo PM ) |
%S | Sekundy (00 ..59 ) |
%s | Sekundy (00 ..59 ) |
%T | Čas, 24 hodin (hh:mm:ss ) |
%U | Týden (00 ..53 ), kde neděle je prvním dnem v týdnu; WEEK() režim 0 |
%u | Týden (00 ..53 ), kde pondělí je první den v týdnu; WEEK() režim 1 |
%V | Týden (01 ..53 ), kde neděle je prvním dnem v týdnu; WEEK() režim 2; používá se s %X |
%v | Týden (01 ..53 ), kde pondělí je první den v týdnu; WEEK() režim 3; používá se s %x |
%W | Název dne v týdnu (Sunday ..Saturday ) |
%w | Den v týdnu (0 =Neděle..6 =Sobota) |
%X | Rok pro týden, kde neděle je prvním dnem v týdnu, číslice, čtyři číslice; používá se s %V |
%x | Rok pro týden, kde pondělí je první den v týdnu, číselné, čtyři číslice; používá se s %v |
%Y | Rok, číslice, čtyři číslice |
%y | Rok, číselný (dvě číslice) |
%% | Doslovné % postava |
% | x , pro jakékoli „x ” není uvedeno výše |