FORMAT (Transact-SQL)
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL Analytics-eindpunt in Microsoft Fabric
Warehouse 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
Verwante inhoud
- CAST en CONVERTEREN (Transact-SQL)
-
STR (Transact-SQL) - tekenreeksfuncties (Transact-SQL)