Sdílet prostřednictvím


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.

Transact-SQL konvence syntaxe

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 musí obsahovat platný formátovací řetězec rozhraní .NET Framework, a to buď jako standardní formátovací řetězec (například nebo ), nebo jako vzor vlastních znaků pro kalendářní data a číselné hodnoty (například ). Složené formátování není podporováno.

Ú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 není platný, vyvolá chybu.

Návratové typy

nvarchar nebo null

Délka návratové hodnoty je určena formátem .

Poznámky

vrátí chyby jiné než jazykové verze , která není platná. Například se vrátí, pokud hodnota zadaná ve formátu není platná.

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
  • CAST a CONVERT (Transact-SQL)
  • STR (Transact-SQL)
  • řetězcové funkce (Transact-SQL)