V MySQL můžete použít TIME_FORMAT()
funkce pro formátování časové hodnoty.
Tato funkce funguje stejně jako DATE_FORMAT()
s tím rozdílem, že hodnotu lze formátovat pouze v hodinách, minutách, sekundách a mikrosekundách.
Seznam specifikátorů formátu, které lze s touto funkcí použít, naleznete v tabulce ve spodní části tohoto článku.
Syntaxe
Syntaxe vypadá takto:
TIME_FORMAT(time,format)
Kde time
je časová hodnota, kterou chcete formátovat, a format
je formátovací řetězec (určuje, jak je hodnota času skutečně formátována).
Příklad 1 – Základní použití
Zde je příklad k demonstraci.
SELECT TIME_FORMAT('14:35:27', '%r') AS 'Result';
Výsledek:
+-------------+ | Result | +-------------+ | 02:35:27 PM | +-------------+
Tento příklad používá %r
specifikátor formátu, který formátuje čas jako 12hodinový (hh:mm:ss následovaný AM nebo PM).
Příklad 2 – Specifičtější formátování
Pokud použití obecnějšího specifikátoru formátu jako v předchozím příkladu není vhodné, existují různé další specifikátory formátu, které vám mohou pomoci vytvořit požadovaný formát.
Pokud se vám například líbí předchozí formát, ale nechcete, aby se vracely sekundy, můžete to udělat takto:
SELECT TIME_FORMAT('14:35:27', '%h:%i %p') AS 'Result';
Výsledek:
+----------+ | Result | +----------+ | 02:35 PM | +----------+
Příklad 3 – 24 hodin
Existují také specifikátory formátu pro 24hodinový čas. Zde je nejjednodušší způsob, jak formátovat čas pomocí 24hodinového času.
SELECT TIME_FORMAT('14:35:27', '%T') AS 'Result';
Výsledek:
+----------+ | Result | +----------+ | 14:35:27 | +----------+
Příklad 4 – Mikrosekundy
Zde je příklad, který ve výsledku zahrnuje část ve zlomcích sekund:
SELECT TIME_FORMAT('14:35:27', '%H:%i:%s.%f') AS 'Result';
Výsledek:
+-----------------+ | Result | +-----------------+ | 14:35:27.000000 | +-----------------+
Samozřejmě můžeme do počáteční hodnoty času zahrnout i mikrosekundy:
SELECT TIME_FORMAT('14:35:27.123456', '%H:%i:%s.%f') AS 'Result';
Výsledek:
+-----------------+ | Result | +-----------------+ | 14:35:27.123456 | +-----------------+
Příklad 5 – Uplynulý čas
Typ časového údaje není omezen na 24 hodinový čas. Může být také použit k zobrazení uplynulého času. Při používání této funkce pro uplynulý čas byste si měli být vědomi toho, jak specifikátory formátu hodin pracují s hodnotami času mimo rozsah 0 až 23.
Dokumentace MySQL uvádí následující:
Pokud hodnota času obsahuje část hodiny, která je větší než
23
,%H
a%k
Specifikátory formátu hodin vytvářejí hodnotu větší, než je obvyklý rozsah0..23
. Ostatní specifikátory formátu hodin vytvářejí hodinovou hodnotu modulo12
.
Zde je příklad k demonstraci:
SELECT TIME_FORMAT('24:00:00', '%H %k %h %I %l') AS '24', TIME_FORMAT('48:00:00', '%H %k %h %I %l') AS '48', TIME_FORMAT('100:00:00', '%H %k %h %I %l') AS '100', TIME_FORMAT('500:00:00', '%H %k %h %I %l') AS '500';
Výsledek:
+----------------+----------------+-----------------+-----------------+ | 24 | 48 | 100 | 500 | +----------------+----------------+-----------------+-----------------+ | 24 24 12 12 12 | 48 48 12 12 12 | 100 100 04 04 4 | 500 500 08 08 8 | +----------------+----------------+-----------------+-----------------+
Specifikátory formátu
Následující specifikátory lze použít k určení návratového formátu. Jedná se o podmnožinu dostupných s DATE_FORMAT()
funkce. Hodnota formátu musí začínat znakem procenta (%
).
Specifikátor | Popis |
---|---|
%f | Mikrosekundy (000000 ..999999 ) |
%H | Hodina (00 ..23 ) |
%h | Hodina (01 ..12 ) |
%I | Hodina (01 ..12 ) |
%i | Minuty, číselné (00 ..59 ) |
%k | Hodina (0 ..23 ) |
%l | Hodina (1 ..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 ) |
%% | Doslovné % postava |