Freigeben über


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.

Themenlink (Symbol) 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)

Siehe auch

Verweis

CAST und CONVERT (Transact-SQL)