FORMAT (Transact-SQL)
Gibt einen mit dem angegebenen Format und der optionalen Kultur in SQL Server 2014 formatierten Wert zurück. Verwenden Sie die FORMAT-Funktion für die gebietsschemabasierte Formatierung von Datums-/Uhrzeitwerten sowie numerischen Werten als Zeichenfolgen. Für allgemeine Datentypkonvertierungen verwenden Sie CAST oder CONVERT.
Transact-SQL-Syntaxkonventionen
Gilt für: SQL Server (SQL Server 2012 bis aktuelle Version), Windows Azure SQL-Datenbank (Ursprüngliche Version bis aktuelle Version). |
Syntax
FORMAT ( value, format [, culture ] )
Argumente
value
Ausdruck eines unterstützten Datentyps, der formatiert werden soll. Eine Liste gültiger Typen finden Sie in der Tabelle im folgenden Abschnitt mit Hinweisen.format
nvarchar-Formatmuster.Das format-Argument muss eine gültige .NET Framework-Formatzeichenfolge enthalten, entweder als Standardformatzeichenfolge (z. B. "C" oder "D") oder als ein Muster aus benutzerdefinierten Zeichen für Datumsangaben und numerische Werte (z. B. "MMMM-DD, yyyy (dddd)"). Kombinierte Formatierung wird nicht unterstützt. Ausführliche Erläuterungen zu diesen Formatierungsmustern können Sie der .NET Framework-Dokumentation zur allgemeinen Zeichenfolgenformatierung sowie zu benutzerdefinierten Datums- und Uhrzeitformaten und benutzerdefinierten Zahlenformaten entnehmen. Ein guter Ausgangspunkt ist das Thema zu "Formatierungstypen".
culture
Optionales nvarchar-Argument, das eine Kultur angibt.Wenn das culture-Argument nicht angegeben wurde, wird die Sprache der aktuellen Sitzung verwendet. Diese Sprache ist entweder implizit definiert oder wird explizit mit der Anweisung SET LANGUAGE festgelegt. culture lässt alle von .NET Framework unterstützten Kulturen als Argument zu und ist auf die explizit durch SQL Server unterstützten Sprachen beschränkt. Wenn das culture-Argument nicht gültig ist, löst FORMAT einen Fehler aus.
Rückgabetypen
nvarchar oder NULL.
Die Länge des Rückgabewerts wird von format bestimmt.
Hinweise
FORMAT gibt bei Fehlern, bei denen es sich nicht um eine culture handelt, die nicht valid ist, NULL zurück. NULL wird z. B. zurückgegeben, wenn der in format angegebene Wert nicht gültig ist.
Für FORMAT muss .NET Framework Common Language Runtime (CLR) vorhanden sein.
Diese Funktion wird nicht remote ausgeführt, da sie die Existenz der CLR voraussetzt. Die Remoteausführung einer Funktion, die die CLR erfordert, würde einen Fehler auf dem Remoteserver auslösen.
In der folgenden Tabelle sind zulässige Datentypen für das value-Argument sowie die entsprechenden .NET Framework-Zuordnungstypen aufgeführt.
Kategorie |
Typ |
.NET-Typ |
---|---|---|
Numerisch |
bigint |
Int64 |
Numerisch |
int |
Int32 |
Numerisch |
smallint |
Int16 |
Numerisch |
tinyint |
Byte |
Numerisch |
decimal |
SqlDecimal |
Numerisch |
numeric |
SqlDecimal |
Numerisch |
float |
Double |
Numerisch |
real |
Single |
Numerisch |
smallmoney |
Decimal |
Numerisch |
money |
Decimal |
Datum und Uhrzeit |
date |
DateTime |
Datum und Uhrzeit |
time |
TimeSpan |
Datum und Uhrzeit |
datetime |
DateTime |
Datum und Uhrzeit |
smalldatetime |
DateTime |
Datum und Uhrzeit |
datetime2 |
DateTime |
Datum und Uhrzeit |
datetimeoffset |
DateTimeOffset |
Beispiele
A.Einfaches Beispiel für FORMAT
Im folgenden Beispiel wird ein einfaches, für andere Kulturen formatiertes Datum zurückgegeben.
DECLARE @d DATETIME = '10/01/2011';
SELECT FORMAT ( @d, 'd', 'en-US' ) AS 'US English Result'
,FORMAT ( @d, 'd', 'en-gb' ) AS 'Great Britain English Result'
,FORMAT ( @d, 'd', 'de-de' ) AS 'German Result'
,FORMAT ( @d, 'd', 'zh-cn' ) AS 'Simplified Chinese (PRC) Result';
SELECT FORMAT ( @d, 'D', 'en-US' ) AS 'US English Result'
,FORMAT ( @d, 'D', 'en-gb' ) AS 'Great Britain English Result'
,FORMAT ( @d, 'D', 'de-de' ) AS 'German Result'
,FORMAT ( @d, 'D', 'zh-cn' ) AS 'Chinese (Simplified PRC) Result';
Dies ist das Resultset.
US English Result Great Britain English Result German Result Simplified Chinese (PRC) Result
---------------- ----------------------------- ------------- -------------------------------------
10/1/2011 01/10/2011 01.10.2011 2011/10/1
(1 row(s) affected)
US English Result Great Britain English Result German Result Chinese (Simplified PRC) Result
---------------------------- ----------------------------- ----------------------------- ---------------------------------------
Saturday, October 01, 2011 01 October 2011 Samstag, 1. Oktober 2011 2011年10月1日
(1 row(s) affected)
B.FORMAT mit benutzerdefinierten Formatierungszeichenfolgen
Im folgenden Beispiel ist das Formatieren von numerischen Werten durch Angeben eines benutzerdefinierten Formats dargestellt. Weitere Informationen zu diesen und anderen benutzerdefinierten Formaten finden Sie unter Benutzerdefinierte Zahlenformatzeichenfolgen.
-- Current date is September 27 2012.
DECLARE @d DATETIME = GETDATE();
SELECT FORMAT( @d, 'dd/MM/yyyy', 'en-US' ) AS 'DateTime Result'
,FORMAT(123456789,'###-##-####') AS 'Custom Number Result';
Dies ist das Resultset.
DateTime Result Custom Number Result
-------------- --------------------
27/09/2012 123-45-6789
(1 row(s) affected)
C.FORMAT mit numerischen Typen
Im folgenden Beispiel werden fünf Zeilen aus der Sales.CurrencyRate-Tabelle in der AdventureWorks2012-Datenbank zurückgegeben. Die Spalte EndOfDateRate wird als money-Typ in der Tabelle gespeichert. In diesem Beispiel wird die Spalte unformatiert zurückgegeben und wird dann durch Angeben der Typen für das .NET-Zahlenformat, das allgemeine Format und das Währungsformat formatiert. Weitere Informationen zu diesen und anderen Zahlenformaten finden Sie unter Benutzerdefinierte Zahlenformatzeichenfolgen.
bSELECT TOP(5)CurrencyRateID, EndOfDayRate
,FORMAT(EndOfDayRate, 'N', 'en-us') AS 'Number Format'
,FORMAT(EndOfDayRate, 'G', 'en-us') AS 'General Format'
,FORMAT(EndOfDayRate, 'C', 'en-us') AS 'Currency Format'
FROM Sales.CurrencyRate
ORDER BY CurrencyRateID;
Dies ist das Resultset.
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
(5 row(s) affected)
In diesem Beispiel wird die Kultur "Deutsch" (de-de) angegeben.
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 €
(5 row(s) affected)