FORMAT (Transact-SQL)

Gibt einen mit dem angegebenen Format und der optionalen Kultur in SQL Server 2012 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

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 wird entweder implizit oder explizit mit der SET LANGUAGE-Anweisung festgelegt. culture akzeptiert jede von .NET Framework als Argument unterstützte Kultur; es gibt keine Beschränkung auf die explizit von SQL Server unterstützten Sprachen. 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

Numeric

bigint

Int64

Numeric

int

Int32

Numeric

smallint

Int16

Numeric

tinyint

Byte

Numeric

decimal

SqlDecimal

Numeric

numeric

SqlDecimal

Numeric

float

Double

Numeric

real

Single

Numeric

smallmoney

Decimal

Numeric

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 5 Zeilen aus der Tabelle Sales.CurrencyRate 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.

USE AdventureWorks2012;
GO
SELECT 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)