Delen via


FORMAT (Transact-SQL)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL Analytics-eindpunt in Microsoft FabricWarehouse in Microsoft Fabric

Retourneert een waarde die is opgemaakt met de opgegeven notatie en optionele cultuur. Gebruik de functie FORMAT voor landinstellingsbewuste opmaak van datum-/tijd- en getalwaarden als tekenreeksen. Voor algemene conversies van gegevenstypen gebruikt u CAST of CONVERT.

Transact-SQL syntaxisconventies

Syntaxis

FORMAT( value , format [ , culture ] )

Argumenten

waarde

Expressie van een ondersteund gegevenstype om op te maken. Zie de tabel in de sectie Opmerkingen voor een lijst met geldige typen.

nvarchar opmaakpatroon.

De -indeling argument moet een geldige .NET Framework-notatietekenreeks bevatten, ofwel als een standaardnotatietekenreeks (bijvoorbeeld "C" of "D"), of als een patroon van aangepaste tekens voor datums en numerieke waarden (bijvoorbeeld "MMMM DD, yyyy (dddd)"). Samengestelde opmaak wordt niet ondersteund.

Raadpleeg de .NET Framework-documentatie over tekenreeksopmaak in het algemeen, aangepaste datum- en tijdnotaties en aangepaste getalnotaties voor een volledige uitleg van deze opmaakpatronen. Zie Opmaaktypenvoor meer informatie.

cultuur

Optionele nvarchar argument waarmee een cultuur wordt opgegeven.

Als het argument cultuur niet is opgegeven, wordt de taal van de huidige sessie gebruikt. Deze taal wordt impliciet of expliciet ingesteld met behulp van de SET LANGUAGE-instructie. cultuur accepteert elke cultuur die door .NET Framework wordt ondersteund als argument; het is niet beperkt tot de talen die expliciet worden ondersteund door SQL Server. Als het argument cultuur ongeldig is, wordt er een fout gegenereerd FORMAT.

Retourtypen

nvarchar- of null

De lengte van de retourwaarde wordt bepaald door de notatie.

Opmerkingen

FORMAT retourneert NULL voor andere fouten dan een cultuur die niet geldig is geldige. NULL wordt bijvoorbeeld geretourneerd als de waarde die is opgegeven in indeling, niet geldig is.

De functie FORMAT is niet-deterministisch.

FORMAT is afhankelijk van de aanwezigheid van .NET Framework Common Language Runtime (CLR).

Deze functie kan niet op afstand worden uitgevoerd, omdat deze afhankelijk is van de aanwezigheid van de CLR. Externe toegang tot een functie waarvoor de CLR is vereist, kan een fout veroorzaken op de externe server.

FORMAT is afhankelijk van CLR-opmaakregels, die bepalen dat dubbele punten en punten moeten worden ontsnapt. Wanneer de notatietekenreeks (tweede parameter) een dubbele punt of punt bevat, moet de dubbele punt of punt daarom worden escaped met backslash wanneer een invoerwaarde (eerste parameter) van het tijd gegevenstype is. Zie D. FORMAT met tijdgegevenstypen.

De volgende tabel bevat de acceptabele gegevenstypen voor de waarde argument, samen met hun .NET Framework-toewijzingsequivalente typen.

Categorie Type .NET-type
Numeriek grote Int64
Numeriek Int32
Numeriek kleine Int16
Numeriek kleine Byte
Numeriek decimale SqlDecimal
Numeriek numerieke SqlDecimal
Numeriek float- Double
Numeriek echte Single
Numeriek smallmoney Decimal
Numeriek geld Decimal
Datum en tijd datum DateTime
Datum en tijd tijd TimeSpan
Datum en tijd datum/tijd- DateTime
Datum en tijd smalldatetime- DateTime
Datum en tijd datetime2- DateTime
Datum en tijd datetimeoffset DateTimeOffset

Voorbeelden

Een. Voorbeeld van eenvoudige INDELING

In het volgende voorbeeld wordt een eenvoudige datum geretourneerd die is opgemaakt voor verschillende culturen.

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

Dit is de resultatenset.

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. OPMAAK met tekenreeksen voor aangepaste opmaak

In het volgende voorbeeld ziet u numerieke waarden opmaken door een aangepaste notatie op te geven. In het voorbeeld wordt ervan uitgegaan dat de huidige datum 9 augustus 2024 is. Zie Tekenreeksen voor aangepaste numerieke notatiesvoor meer informatie over deze en andere aangepaste notaties.

DECLARE @d AS DATE = GETDATE();

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

Dit is de resultatenset.

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

C. NOTATIE met numerieke typen

In het volgende voorbeeld worden vijf rijen uit de Sales.CurrencyRate tabel in de AdventureWorks2022-database geretourneerd. De kolom EndOfDateRate wordt opgeslagen als type geld in de tabel. In dit voorbeeld wordt de kolom niet-opgemaakt en vervolgens opgemaakt door de notatie .NET Number, General format en Currency format op te geven. Zie Standaardtekenreeksen voor numerieke notatiesvoor meer informatie over deze en andere numerieke notaties.

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;

Dit is de resultatenset.

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

In dit voorbeeld wordt de Duitse cultuur (de-de) opgegeven.

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 met tijdgegevenstypen

FORMAT retourneert in deze gevallen NULL omdat . en : niet worden ontsnapt.

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

De notatie retourneert een opgemaakte tekenreeks omdat de . en : zijn ontsnapt.

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

De notatie retourneert een opgemaakte huidige tijd met AM of PM opgegeven.

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

De notatie retourneert de opgegeven tijd, waarbij AM wordt weergegeven.

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

De notatie retourneert de opgegeven tijd, waarbij PM wordt weergegeven.

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

De indeling retourneert de opgegeven tijd in de indeling van 24 uur.

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

E. Opmaak met scheidingstekens voor komma's voor grote getallen

In het volgende voorbeeld ziet u hoe u grote getallen opmaken met kommascheidingstekens.

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

Dit is de resultatenset.

1,234,568

In dit voorbeeld wordt de N opmaakaanduiding gebruikt. De N aanduiding wordt gebruikt voor numerieke waarden en het aantal decimalen kan worden aangepast door de notatietekenreeks te wijzigen (bijvoorbeeld N2 voor twee decimalen).

FORMAT ( value, format_string [, culture ] )

Parameters

  • value: de waarde die moet worden opgemaakt.
  • format_string: een tekenreeks die de indeling aangeeft die moet worden toegepast.
  • culture: (optioneel) Een tekenreeks die de cultuur aangeeft die moet worden gebruikt voor opmaak.
SELECT FORMAT(1234567.89, 'N0') AS FormattedNumber; 
1,234,568