V SQL Server můžete použít T-SQL FORMAT()
funkce pro formátování data a/nebo času. Jednoduše uveďte dva argumenty; datum/čas a použitý formát.
Formát je dodáván jako formátovací řetězec. Formátovací řetězec definuje, jak by měl být výstup formátován.
FORMAT()
funkce také přijímá volitelný argument „kultura“, který vám umožňuje určit jazyk/místo, kterému by se měly výsledky držet.
Základní příklad
Zde je základní příklad použití FORMAT()
funkce pro formátování data.
Nezpracované datum
Nejprve se podívejme, jak vypadá syrové datum. Pokud spustíme následující příkaz:
SELECT GETDATE();
Dostaneme výsledek, který vypadá asi takto:
2018-05-03 02:36:54.480
Formátované datum
Nyní můžeme použít FORMAT()
k formátování tohoto data a času do našeho preferovaného formátu. Mohli bychom například udělat toto:
SELECT FORMAT( GETDATE(), 'D');
Výsledkem je toto:
Thursday, May 3, 2018
Toto je jen jeden z mnoha formátů, které jsme si mohli vybrat. Tady je další:
SELECT FORMAT( GETDATE(), 'd');
Výsledkem je toto:
5/3/2018
Skutečné výsledky se budou lišit v závislosti na použité kultuře. Ve výchozím nastavení je použit jazyk aktuální relace, ale můžete jej také přepsat pomocí třetího („kultura“) argumentu.
Nastavení národního prostředí
Do výše uvedeného kódu bychom mohli přidat třetí argument („kultura“), abychom určili národní prostředí, které se má použít pro formát data.
Takže bychom mohli udělat například toto:
SELECT FORMAT( GETDATE(), 'd', 'en-gb');
Výsledkem je toto:
03/05/2018
Zde je další příklad:
SELECT FORMAT( GETDATE(), 'd', 'zh-cn');
Výsledkem je toto:
5/3/2018
Pokud kultura argument není zadán, použije se jazyk aktuální relace.
Zde je návod, jak najít jazyk aktuální relace a zde je návod, jak jej nastavit.
Upozorňujeme, že aktuální jazyk bude obvykle stejný jako výchozí jazyk uživatele, ale nemusí tomu tak být, pokud uživatel změnil aktuální jazyk pomocí SET LANGUAGE
. V každém případě můžete také zjistit, jaký je výchozí jazyk.
Jak si dokážete představit, můžete získat zcela odlišné výsledky v závislosti na vašem aktuálním jazyce nebo hodnotě jakéhokoli argumentu „kultury“. Další příklady najdete v části Jak může jazyková nastavení ovlivnit výsledky FORMAT().
Extrahování měsíce/týdne/roku
Můžete použít FORMAT()
funkce vrátí pouze měsíční část data nebo týden nebo rok podle potřeby.
Všimněte si, že se rozlišují malá a velká písmena. Například MMM
formátuje měsíc jinak na mmm
.
Měsíc
Příklad kódu pro vrácení části měsíce:
SELECT FORMAT( GETDATE(), 'MMM');
Výsledek:
May
Rok
Příklad kódu pro vrácení části roku:
SELECT FORMAT( GETDATE(), 'yyyy');
Výsledek:
2018
Den
Příklad kódu pro vrácení části dne:
SELECT FORMAT( GETDATE(), 'dddd');
Výsledek:
Thursday
Extrahování času
Můžete také použít FORMAT()
funkce vrátit čas v určeném formátu.
Zde je příklad:
SELECT FORMAT( GETDATE(), 'hh.mm');
Výsledek:
03.37
Designátor AM/PM
Můžete také přidat tt
zahrnout označení AM/PM:
SELECT FORMAT( GETDATE(), 'hh.mm tt');
Výsledek:
03.37 AM
Kombinování formátovacích řetězců
Tyto formátovací řetězce můžete také kombinovat, abyste získali svůj vlastní přizpůsobený formát data. Příklad:
SELECT FORMAT( GETDATE(), 'hh.mm tt dddd, dd MMMM, yyyy');
Výsledek:
03.41 AM Thursday, 03 May, 2018
Referenční informace o specifikátorech formátu data a času
Následující články obsahují všechny specifikátory formátu data a času, které lze použít s FORMAT()
funkce v SQL Server, spolu s příklady T-SQL:
- Standardní řetězce formátu data a času
- Vlastní řetězce formátu data a času
Jedná se o stejné specifikátory formátu data a času, které podporuje rozhraní .NET Framework (FORMAT()
funkce závisí na .NET Framework).
Přehled číselných specifikátorů formátu
Následující články obsahují všechny číselné specifikátory formátu, které můžete použít s FORMAT()
funkce (tj. pro formátování čísel):
- Standardní řetězce číselného formátu
- Řetězce vlastního číselného formátu
Jedná se o stejné číselné specifikátory formátu, které podporuje rozhraní .NET Framework.
Další funkce data
T-SQL také obsahuje spoustu dalších funkcí, které vám pomohou extrahovat části z dat. Patří mezi ně funkce jako DAY()
, MONTH()
, YEAR()
, DATEPART()
a DATENAME()
.