sql >> Databáze >  >> RDS >> Sqlserver

Řetězce vlastního formátu data a času Podporováno FORMAT() na serveru SQL Server

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.


  1. Replikace dat v IRI Workbench

  2. Jak použít vypočítaný sloupec k výpočtu jiného sloupce ve stejném zobrazení

  3. LOWER() – Převod na malá písmena v PostgreSQL

  4. Povolit databázovou poštu na serveru SQL Server (T-SQL)