Condividi tramite


FORMAT (Transact-SQL)

Restituisce un valore formattato con il formato specificato e impostazioni cultura facoltative in SQL Server 2012. Utilizzare la funzione FORMAT per formattare in base alle impostazioni locali i valori numerici e di data/ora come stringhe. Per le conversioni di tipi di dati generali, utilizzare CAST o CONVERT.

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL

Sintassi

FORMAT ( value, format [, culture ] )

Argomenti

  • value
    Espressione di un tipo di dati supportato da formattare. Per un elenco di tipi validi, vedere la tabella nella sezione Osservazioni indicata di seguito.

  • format
    Schema di formattazione nvarchar.

    L'argomento format deve contenere una stringa di formato .NET Framework valida, ovvero una stringa di formato standard (ad esempio "C" o "D") o uno schema di caratteri personalizzati per date e valori numerici (ad esempio "MMMM GG, aaaa (gggg)"). La formattazione composta non è supportata. Per una spiegazione completa di questi schemi di formattazione, vedere la documentazione di .NET Framework sulla formattazione di stringhe in formati di data e ora generali e personalizzati e in formati di numero personalizzati. Si consiglia di iniziale con l'argomento "Formattazione dei tipi di dati."

  • culture
    Argomento nvarchar facoltativo che specifica le impostazioni cultura.

    Se l'argomento culture non è specificato, viene utilizzata la lingua della sessione corrente. Questa lingua è impostata in modo implicito oppure in modo esplicito tramite l'istruzione SET LANGUAGE. culture accetta qualsiasi impostazione cultura supportata da.NET Framework come argomento; non è limitato alle lingue supportate in modo esplicito da SQL Server. Se l'argomento culture non è valido, FORMAT genera un errore.

Tipi restituiti

nvarchar o Null

La lunghezza del valore restituito viene determinata da format.

Osservazioni

FORMAT restituisce NULL per errori diversi da un valore di culture diverso da valid. Ad esempio, viene restituito NULL se il valore specificato in format non è valido.

FORMAT è basato sulla presenza di CLR (Common Language Runtime) di .NET Framework.

Questa funzione non sarà eseguita in modalità remota poiché dipende dalla presenza di CLR. L'esecuzione in modalità remota di una funzione che richiede CLR provocherebbe un errore sul server remoto.

Nella tabella seguente vengono elencati i tipi di dati accettabili per l'argomento value, insieme con i tipi equivalenti di mapping per .NET Framework.

Categoria

Tipo

Tipo .NET

Valore numerico

bigint

Int64

Valore numerico

int

Int32

Valore numerico

smallint

Int16

Valore numerico

tinyint

Byte

Valore numerico

decimal

SqlDecimal

Valore numerico

numeric

SqlDecimal

Valore numerico

float

Double

Valore numerico

real

Single

Valore numerico

smallmoney

Decimal

Valore numerico

money

Decimal

Data e ora

date

DateTime

Data e ora

time

TimeSpan

Data e ora

datetime

DateTime

Data e ora

smalldatetime

DateTime

Data e ora

datetime2

DateTime

Data e ora

datetimeoffset

DateTimeOffset

Esempi

A. Esempio semplice di FORMAT

Nell'esempio seguente viene restituita una data semplice nel formato per impostazioni cultura diverse.

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

Set di risultati:

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 con stringhe di formattazione personalizzate

Nell'esempio seguente vengono illustrati i valori numerici di formattazione specificando un formato personalizzato. Per ulteriori informazioni su questi e altri formati personalizzati, vedere Stringhe di formato numerico personalizzate.

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

Set di risultati:

DateTime Result  Custom Number Result
--------------   --------------------
27/09/2012       123-45-6789

(1 row(s) affected)

C. FORMAT con tipi numerici

Nell'esempio seguente vengono restituite 5 righe della tabella Sales.CurrencyRate. La colonna EndOfDateRate viene archiviata come tipo money nella tabella. In questo esempio, la colonna viene restituita senza formattazione e viene quindi formattata specificando i tipi di formato di numero, valuta e generico di .NET. Per ulteriori informazioni su questi e altri formati numerici, vedere Stringhe di formato numerico standard.

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;

Set di risultati:

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 questo esempio vengono specificate le impostazioni cultura tedesche (de-de).

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)

Vedere anche

Riferimento

CAST e CONVERT (Transact-SQL)