FORMAT (Transact-SQL)
platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed Instancekoncový bod azure Synapse AnalyticsSQL Analytics v Microsoft FabricWarehouse v Microsoft Fabric
Vrátí hodnotu formátovanou zadaným formátem a volitelnou jazykovou verzí. Funkce FORMAT
slouží k formátování data a času a číselných hodnot v národním prostředí jako řetězců. Pro obecné převody datových typů použijte CAST
nebo CONVERT
.
Syntax
FORMAT( value , format [ , culture ] )
Argumenty
hodnoty
Výraz podporovaného datového typu pro formátování Seznam platných typů najdete v tabulce v části Poznámky.
formát
vzor formátu nvarchar.
Argument formátu
Úplné vysvětlení těchto vzorů formátování najdete v dokumentaci k rozhraní .NET Framework o formátování řetězců obecně, vlastních formátech data a času a vlastních formátech čísel. Další informace naleznete v tématu Typy formátování.
jazykové verze
Volitelné nvarchar argumentu určující jazykovou verzi.
Pokud není zadaný argument jazykové verze, použije se jazyk aktuální relace. Tento jazyk se nastavuje implicitně nebo explicitně pomocí příkazu SET LANGUAGE
.
jazykové verze přijímá jakoukoli jazykovou verzi podporovanou rozhraním .NET Framework jako argument; není omezena na jazyky, které SQL Server explicitně podporuje. Pokud argument jazykové verze
Návratové typy
nvarchar nebo null
Délka návratové hodnoty je určena formátem .
Poznámky
Funkce FORMAT
není určená.
FORMAT
spoléhá na přítomnost modulu CLR (Common Language Runtime) rozhraní .NET Framework.
Tato funkce nemůže být vzdálená, protože závisí na přítomnosti modulu CLR. Vzdálená komunikace funkce, která vyžaduje CLR, může způsobit chybu na vzdáleném serveru.
FORMAT
spoléhá na pravidla formátování CLR, která určují, že dvojtečky a tečky musí být uniknuty. Proto pokud formátovací řetězec (druhý parametr) obsahuje dvojtečku nebo tečku, dvojtečka nebo tečka musí být uchvácená zpětným lomítkem, pokud je vstupní hodnota (první parametr) čas datového typu. Viz D. FORMÁT s datovými typy času.
Následující tabulka obsahuje seznam přijatelných datových typů pro hodnotu argumentu společně s odpovídajícími typy mapování rozhraní .NET Framework.
Kategorie | Typ | Typ .NET |
---|---|---|
Číselný | bigint | Int64 |
Číselný | int | Int32 |
Číselný | malé | Int16 |
Číselný | tinyint | Byte |
Číselný | desetinných míst | SqlDecimal |
Číselný | číselné | SqlDecimal |
Číselný | plovoucí | Double |
Číselný | skutečné | Single |
Číselný | malé | Decimal |
Číselný | peněz | Decimal |
Datum a čas | datum | DateTime |
Datum a čas | čas | TimeSpan |
Datum a čas | data a času | DateTime |
Datum a čas | smalldatetime | DateTime |
Datum a čas | datetime2 | DateTime |
Datum a čas | datetimeoffset | DateTimeOffset |
Příklady
A. Příklad jednoduchého FORMÁTU
Následující příklad vrátí jednoduché datum formátované pro různé jazykové verze.
DECLARE @d AS DATE = '08/09/2024';
SELECT FORMAT(@d, 'd', 'en-US') AS 'US English',
FORMAT(@d, 'd', 'en-gb') AS 'British English',
FORMAT(@d, 'd', 'de-de') AS 'German',
FORMAT(@d, 'd', 'zh-cn') AS 'Chinese Simplified (PRC)';
SELECT FORMAT(@d, 'D', 'en-US') AS 'US English',
FORMAT(@d, 'D', 'en-gb') AS 'British English',
FORMAT(@d, 'D', 'de-de') AS 'German',
FORMAT(@d, 'D', 'zh-cn') AS 'Chinese Simplified (PRC)';
Tady je sada výsledků.
US English British English German Simplified Chinese (PRC)
----------- ---------------- ----------- -------------------------
8/9/2024 09/08/2024 09.08.2024 2024/8/9
US English British English German Chinese (Simplified PRC)
----------------------- ---------------- ------------------------ -------------------------
Friday, August 9, 2024 09 August 2024 Freitag, 9. August 2024 2024年8月9日
B. FORMAT s vlastními formátovacími řetězci
Následující příklad ukazuje formátování číselných hodnot zadáním vlastního formátu. Příklad předpokládá, že aktuální datum je 9. srpna 2024. Další informace o těchto a dalších vlastních formátech naleznete v tématu vlastní číselné formátovací řetězce.
DECLARE @d AS DATE = GETDATE();
SELECT FORMAT(@d, 'dd/MM/yyyy', 'en-US') AS 'Date',
FORMAT(123456789, '###-##-####') AS 'Custom Number';
Tady je sada výsledků.
Date Custom Number
----------- --------------
09/08/2024 123-45-6789
C. FORMAT s číselnými typy
Následující příklad vrátí pět řádků z tabulky Sales.CurrencyRate
v AdventureWorks2022
databázi. Sloupec EndOfDateRate
je uložen jako typ peníze v tabulce. V tomto příkladu se sloupec vrátí neformátovaný a formátovaný zadáním formátu čísla .NET, obecného formátu a formátu měny. Další informace o těchto a dalších číselných formátech naleznete v tématu Standardní řetězce číselného formátu.
SELECT TOP (5) CurrencyRateID,
EndOfDayRate,
FORMAT(EndOfDayRate, 'N', 'en-us') AS 'Numeric Format',
FORMAT(EndOfDayRate, 'G', 'en-us') AS 'General Format',
FORMAT(EndOfDayRate, 'C', 'en-us') AS 'Currency Format'
FROM Sales.CurrencyRate
ORDER BY CurrencyRateID;
Tady je sada výsledků.
CurrencyRateID EndOfDayRate Numeric Format General Format Currency Format
-------------- ------------ -------------- -------------- ---------------
1 1.0002 1.00 1.0002 $1.00
2 1.55 1.55 1.5500 $1.55
3 1.9419 1.94 1.9419 $1.94
4 1.4683 1.47 1.4683 $1.47
5 8.2784 8.28 8.2784 $8.28
Tento příklad určuje německou jazykovou verzi (de-de
).
SELECT TOP (5) CurrencyRateID,
EndOfDayRate,
FORMAT(EndOfDayRate, 'N', 'de-de') AS 'Numeric Format',
FORMAT(EndOfDayRate, 'G', 'de-de') AS 'General Format',
FORMAT(EndOfDayRate, 'C', 'de-de') AS 'Currency Format'
FROM Sales.CurrencyRate
ORDER BY CurrencyRateID;
CurrencyRateID EndOfDayRate Numeric Format General Format Currency Format
-------------- ------------ -------------- -------------- ---------------
1 1.0002 1,00 1,0002 1,00 €
2 1.55 1,55 1,5500 1,55 €
3 1.9419 1,94 1,9419 1,94 €
4 1.4683 1,47 1,4683 1,47 €
5 8.2784 8,28 8,2784 8,28 €
D. FORMAT s datovými typy času
FORMAT
v těchto případech vrátí NULL
, protože .
a :
neuniknou.
SELECT FORMAT(CAST('07:35' AS TIME), N'hh.mm'); --> returns NULL
SELECT FORMAT(CAST('07:35' AS TIME), N'hh:mm'); --> returns NULL
Formát vrátí formátovaný řetězec, protože .
a :
jsou řídicí.
SELECT FORMAT(CAST('07:35' AS TIME), N'hh\.mm'); --> returns 07.35
SELECT FORMAT(CAST('07:35' AS TIME), N'hh\:mm'); --> returns 07:35
Formát vrátí formátovaný aktuální čas se zadaným dom nebo odp.
SELECT FORMAT(SYSDATETIME(), N'hh:mm tt'); --> returns 03:46 PM
SELECT FORMAT(SYSDATETIME(), N'hh:mm t'); --> returns 03:46 P
Formát vrátí zadaný čas, který zobrazuje AM.
SELECT FORMAT(CAST('2018-01-01 01:00' AS DATETIME2), N'hh:mm tt'); --> returns 01:00 AM
SELECT FORMAT(CAST('2018-01-01 01:00' AS DATETIME2), N'hh:mm t'); --> returns 01:00 A
Formát vrátí zadaný čas, který zobrazuje pm.
SELECT FORMAT(CAST('2018-01-01 14:00' AS DATETIME2), N'hh:mm tt'); --> returns 02:00 PM
SELECT FORMAT(CAST('2018-01-01 14:00' AS DATETIME2), N'hh:mm t'); --> returns 02:00 P
Formát vrátí zadaný čas ve formátu 24 hodin.
SELECT FORMAT(CAST('2018-01-01 14:00' AS DATETIME2), N'HH:mm'); --> returns 14:00
E. Formátování pomocí oddělovačů čárk pro velká čísla
Následující příklad ukazuje, jak formátovat velká čísla s oddělovači čárkami.
SELECT FORMAT(1234567.89, 'N0') AS FormattedNumber;
Tady je sada výsledků.
1,234,568
Tento příklad používá specifikátor formátu N
. Specifikátor N
se používá pro číselné hodnoty a počet desetinných míst lze upravit změnou řetězce formátu (například N2
pro dvě desetinná místa).
FORMAT ( value, format_string [, culture ] )
Parametry
-
value
: Hodnota, která se má formátovat. -
format_string
: Řetězec, který určuje formát, který se má použít. -
culture
: (Volitelné) Řetězec, který určuje jazykovou verzi, která se má použít pro formátování.
SELECT FORMAT(1234567.89, 'N0') AS FormattedNumber;
1,234,568
Související obsah
-
CAST a CONVERT (Transact-SQL) -
STR (Transact-SQL) -
řetězcové funkce (Transact-SQL)