Megosztás a következőn keresztül:


FORMÁTUM (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példányAzure Synapse AnalyticsSQL Analytics-végpont a Microsoft FabricbenRaktár a Microsoft FabricbenSQL-adatbázis a Microsoft Fabricben

A megadott formátummal és opcionális kultúrával formázott értéket ad vissza. Használja a FORMAT függvényt a dátum/idő és a számértékek sztringként való területi beállításával. Általános adattípus-átalakításokhoz használja CAST vagy CONVERT.

Transact-SQL szintaxis konvenciói

Szintaxis

FORMAT( value , format [ , culture ] )

Érvek

érték

A formázandó támogatott adattípus kifejezése. Az érvényes típusok listáját a Megjegyzések szakaszban találja.

formátum

nvarchar formátummintát.

A formátum argumentumnak érvényes .NET-keretrendszerformátum-sztringet kell tartalmaznia, akár standard formátumú sztringként (például "C" vagy "D"), akár dátumok és numerikus értékek egyéni karaktermintájaként (például "MMMM DD, yyyy (dddd)"). Az összetett formázás nem támogatott.

Ezeknek a formázási mintáknak a teljes ismertetéséhez tekintse meg a .NET-keretrendszer sztringformázási dokumentációját általában, az egyéni dátum- és időformátumokat, valamint az egyéni számformátumokat. További információ: Formázási típusok.

kultúra

Nem kötelező nvarchar argumentum, amely egy kultúrát határoz meg.

Ha a kultúra argumentum nincs megadva, a rendszer az aktuális munkamenet nyelvét használja. Ez a nyelv implicit módon vagy explicit módon van beállítva a SET LANGUAGE utasítás használatával. kultúra a .NET-keretrendszer által támogatott összes kultúrát argumentumként fogadja el; ez nem korlátozódik az SQL Server által kifejezetten támogatott nyelvekre. Ha a kultúra argumentum érvénytelen, FORMAT hibát jelez.

Visszatérési típusok

nvarchar vagy null

A visszatérési érték hosszát a formátumhatározza meg.

Megjegyzések

FORMAT NULL a nem kulturálisérvényes. A NULL például akkor lesz visszaadva, ha a formátumban megadott érték nem érvényes.

A FORMAT függvény nem determinisztikus.

FORMAT a .NET Framework Common Language Runtime (CLR) jelenlétére támaszkodik.

Ez a függvény nem távolható el, mivel a CLR jelenlététől függ. A CLR-t igénylő függvény újbóli létrehozása hibát okozhat a távoli kiszolgálón.

FORMAT CLR-formázási szabályokra támaszkodik, amelyek azt diktálják, hogy a kettőspontokat és az időszakokat meg kell szökni. Ezért ha a formátumsztring (második paraméter) kettőspontot vagy pontot tartalmaz, a kettőspontot vagy az időszakot fordított perjellel kell feloldani, ha egy bemeneti érték (első paraméter) idő adattípus. Lásd: D. FORMAT időadattípusokkal.

Az alábbi táblázat felsorolja a érték elfogadható adattípusait argumentumot a .NET-keretrendszer megfeleltetési egyenértékű típusaival együtt.

Kategória Típus .NET-típus
Numerikus bigint Int64
Numerikus Int32
Numerikus kis Int16
Numerikus apró Byte
Numerikus decimális SqlDecimal
Numerikus numerikus SqlDecimal
Numerikus lebegőpontos Double
Numerikus valódi Single
Numerikus smallmoney Decimal
Numerikus pénz Decimal
Dátum és idő dátum DateTime
Dátum és idő idő TimeSpan
Dátum és idő datetime DateTime
Dátum és idő smalldatetime DateTime
Dátum és idő datetime2 DateTime
Dátum és idő datetimeoffset DateTimeOffset

Példák

Egy. Egyszerű FORMÁTUM – példa

Az alábbi példa egy különböző kultúrákhoz formázott egyszerű dátumot ad vissza.

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)';

Itt van az eredményhalmaz.

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. FORMÁZÁS egyéni formázási sztringekkel

Az alábbi példa a numerikus értékek egyéni formátum megadásával történő formázását mutatja be. A példa feltételezi, hogy az aktuális dátum 2024. augusztus 9. További információ ezekről és más egyéni formátumokról: Egyéni numerikus formázási sztringek.

DECLARE @d AS DATE = GETDATE();

SELECT FORMAT(@d, 'dd/MM/yyyy', 'en-US') AS 'Date',
       FORMAT(123456789, '###-##-####') AS 'Custom Number';

Itt van az eredményhalmaz.

Date         Custom Number
-----------  --------------
09/08/2024   123-45-6789

C. FORMÁTUM numerikus típusokkal

Az alábbi példa öt sort ad vissza a Sales.CurrencyRate adatbázis AdventureWorks2025 táblájából. A EndOfDateRate oszlop pénz típusúként van tárolva a táblában. Ebben a példában az oszlop formázás nélkül lesz visszaadva, majd a .NET-számformátum, az Általános formátum és a Pénznem formátumtípus megadásával lesz formázva. További információ ezekről és más numerikus formátumokról: Standard numerikus formázási sztringek.

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;

Itt van az eredményhalmaz.

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

Ez a példa a német kultúrát (de-de) határozza meg.

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. FORMÁTUM idő adattípusokkal

FORMAT ezekben az esetekben NULL ad vissza, mert . és : nem szöktek meg.

SELECT FORMAT(CAST('07:35' AS TIME), N'hh.mm'); --> returns NULL
SELECT FORMAT(CAST('07:35' AS TIME), N'hh:mm'); --> returns NULL

A formátum formázott sztringet ad vissza, mert a . és a : ki vannak menekülve.

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

A formátum egy formázott aktuális időt ad vissza am vagy PM megadva.

SELECT FORMAT(SYSDATETIME(), N'hh:mm tt'); --> returns 03:46 PM
SELECT FORMAT(SYSDATETIME(), N'hh:mm t');  --> returns 03:46 P

A Formátum a megadott időpontot adja vissza, és az AM értéket jeleníti meg.

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

A formátum a megadott időpontot adja vissza, és megjeleníti a PM értéket.

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

A formátum a megadott időt adja vissza 24 órás formátumban.

SELECT FORMAT(CAST('2018-01-01 14:00' AS DATETIME2), N'HH:mm'); --> returns 14:00

E. Formázás vesszőelválasztókkal nagy számokhoz

Az alábbi példa bemutatja, hogyan formázhat nagy számokat vesszőelválasztókkal.

SELECT FORMAT(1234567.89, 'N0') AS FormattedNumber;

Itt van az eredményhalmaz.

1,234,568

Ez a példa a N formátumjelölőt használja. A N-azonosító numerikus értékekhez használatos, a tizedesjegyek száma pedig módosítható a formátumsztring módosításával (például két tizedesjegyhez N2).

FORMAT ( value, format_string [, culture ] )

Paraméterek

  • value: A formázandó érték.
  • format_string: Az alkalmazandó formátumot meghatározó sztring.
  • culture: (Nem kötelező) A formázáshoz használni kívánt kultúrát meghatározó sztring.
SELECT FORMAT(1234567.89, 'N0') AS FormattedNumber;
1,234,568