Tento článek poskytuje odkaz na vlastní specifikátory formátu data a času, které lze použít při formátování dat a/nebo časů pomocí FORMAT()
funkce v SQL Server, spolu s příklady.
Kterýkoli z těchto specifikátorů formátu můžete zkombinovat a vytvořit tak přizpůsobený formátovací řetězec. Níže naleznete příklad kódu a vysvětlení, jak fungují vlastní formátovací řetězce.
Příklady v tabulce předpokládají datetimeoffset hodnota 2080-05-01 23:09:08.1234567 +07:00
.
Formátovat řetězec | Popis | Příklad |
---|---|---|
d | Den v měsíci, od 1 do 31. | 1 |
dd | Den v měsíci, od 01 do 31. | 01 |
ddd | Zkrácený název dne v týdnu. | St |
dddd | Celý název dne v týdnu. | středa |
f | Desetiny sekundy v hodnotě data a času. | 1 |
ff | Setiny sekundy v hodnotě data a času. | 12 |
fff | Milisekundy v hodnotě data a času. | 123 |
ffff | Deset tisícin sekundy v hodnotě data a času. | 1234 |
fffff | Sto tisícin sekundy v hodnotě data a času. | 12345 |
fffff | Miliontiny sekundy v hodnotě data a času. | 123456 |
fffffff | Deset milióntin sekundy v hodnotě data a času. | 1234567 |
F | Pokud není nula, jedná se o desetiny sekundy v hodnotě data a času. | 1 |
FF | Pokud není nula, pak setiny sekundy v hodnotě data a času. | 12 |
FFF | Pokud není nula, milisekundy v hodnotě data a času. | 123 |
FFFF | Pokud není nula, pak deset tisícin sekundy v hodnotě data a času. | 1234 |
FFFFF | Pokud není nula, pak sto tisícin sekundy v hodnotě data a času. | 12345 |
FFFFF | Pokud není nula, jedná se o miliontiny sekundy v hodnotě data a času. | 123456 |
FFFFFFF | Pokud není nula, pak deset milióntin sekundy v hodnotě data a času. | 1234567 |
g | Období nebo éra. | AD |
gg | Období nebo éra. | AD |
h | Hodina s použitím 12hodinového času od 1 do 12. | 11 |
hh | Hodina s použitím 12hodinového času od 01 do 12. | 11 |
H | Hodina s použitím 24hodinového formátu od 0 do 23. | 23 |
HH | Hodina s použitím 24hodinového času od 00 do 23. | 23 |
K | Informace o časovém pásmu. | +07:00 |
m | Minuta, od 0 do 59. | 9 |
mm | Minuta, od 00 do 59. | 09 |
M | Měsíc od 1 do 12. | 5 |
MM | Měsíc od 01 do 12. | 05 |
MMM | Zkrácený název měsíce. | Květen |
MMMM | Celý název měsíce. | Květen |
s | Druhá, od 0 do 59. | 8 |
ss | Druhá, od 00 do 59. | 08 |
t | První znak označení AM/PM. | P |
tt | Značka AM/PM. | PM |
y | Rok, od 0 do 99. | 80 |
yy | Rok, od 00 do 99. | 80 |
yyy | Rok s minimálně třemi číslicemi. | 2080 |
yyyy | Rok jako čtyřmístné číslo. | 2080 |
yyyyy | Rok jako pětimístné číslo. | 02080 |
z | Hodiny posunuté od UTC, bez úvodních nul. | +7 |
zz | Posun hodin od UTC s nulou na začátku pro jednocifernou hodnotu. | +07 |
zzz | Posun hodin a minut od UTC. | +07:00 |
: | Časový oddělovač. | : |
/ | Oddělovač data. | / |
"string" | Doslovný oddělovač řetězce. | řetězec |
% | Definuje následující znak jako vlastní specifikátor formátu. | |
\ | Escape znak. |
Jakýkoli jiný znak se zkopíruje do výsledného řetězce beze změny.
Důležité: Při použití jednoznakového řetězce vlastního formátu byste před něj měli přidat znak procenta (%
). Případně můžete přidat mezeru. Pokud to neuděláte, dostanete buď NULL, nebo lze specifikátor formátu interpretovat jako standardní specifikátor formátu a získáte nezamýšlené výsledky.
Co jsou řetězce vlastního formátu?
Vlastní formátovací řetězec se skládá z jednoho nebo více vlastních specifikátorů formátu. Výše uvedená tabulka uvádí vlastní specifikátory formátu dostupné pro formátování hodnot data a času do řetězce.
Existují také standardní řetězce formátu data a času. Každý z nich je alias pro vlastní formátovací řetězec. Standardní formátovací řetězce se skládají z jednoho specifikátoru formátu, takže se používají rychleji (ale méně flexibilní než vlastní formátovací řetězce).
Jakýkoli formátovací řetězec, který není standardním formátovacím řetězcem data a času, je interpretován jako vlastní formátovací řetězec data a času.
Příklad použití
Vlastní specifikátory formátu fungují tak, že je můžete zkombinovat a vytvořit vlastní formátovací řetězec při použití FORMAT()
funkce. To určuje, jak bude výsledek formátován.
Zde je několik příkladů:
DECLARE @date datetimeoffset; SET @date = '2080-05-01 23:09:08.1234567 +07:00'; SELECT FORMAT(@date, 'd, MMM yy') AS 'd, MMM yy', FORMAT(@date, 'dd, MMMM yyyy') AS 'dd, MMMM yyyy', FORMAT(@date, 'dddd, MMM dd yyyy') AS 'dddd, MMM dd yyyy', FORMAT(@date, 'hh:mm:ss') AS 'hh:mm:ss', FORMAT(@date, 'hh:mm tt') AS 'hh:mm tt';
Výsledek:
+-------------+-----------------+------------------------+------------+------------+ | d, MMM yy | dd, MMMM yyyy | dddd, MMM dd yyyy | hh:mm:ss | hh:mm tt | |-------------+-----------------+------------------------+------------+------------| | 1, May 80 | 01, May 2080 | Wednesday, May 01 2080 | 11:09:08 | 11:09 PM | +-------------+-----------------+------------------------+------------+------------+
Umožňuje tedy velkou flexibilitu v tom, jak prezentujete svá data a časy.
Zde je příklad použití formátovacího řetězce skládajícího se z jediného specifikátoru formátu.
DECLARE @date datetimeoffset; SET @date = '2080-05-01 23:09:08.1234567 +07:00'; SELECT FORMAT(@date, '%d') AS '%d', FORMAT(@date, '%M') AS '%M', FORMAT(@date, '%K') AS '%K', FORMAT(@date, '%z') AS '%z';
Výsledek:
+------+------+--------+------+ | %d | %M | %K | %z | |------+------+--------+------| | 1 | 5 | +07:00 | +7 | +------+------+--------+------+
Jak již bylo zmíněno, měli byste je přidat znakem procenta, abyste se vyhnuli získání NULL a aby specifikátor formátu nebyl neúmyslně interpretován jako standardní formátovací řetězec.
Zde je to, co se stane, když odstraním znak procenta z předchozího příkladu:
DECLARE @date datetimeoffset; SET @date = '2080-05-01 23:09:08.1234567 +07:00'; SELECT FORMAT(@date, 'd') AS 'd', FORMAT(@date, 'M') AS 'M', FORMAT(@date, 'K') AS 'K', FORMAT(@date, 'z') AS 'z';
Výsledek:
+----------+-------+------+------+ | d | M | K | z | |----------+-------+------+------| | 5/1/2080 | May 1 | NULL | NULL | +----------+-------+------+------+
Dostaneme úplně jiný výsledek.