money e smallmoney (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsDatabase SQL in Microsoft Fabric

Tipi di dati che rappresentano valori monetari o valutari.

Remarks

Tipo di dati Range Storage
money Da -922.337.203.685.477,5808 a 922.337.203.685.477,5807 (da -922.337.203.685.477,58
a 922.337.203.685.477,58 per Informatica. Informatica supporta solo due posizioni decimali e non quattro).
8 byte
smallmoney Da -214.748.3648 a 214.748.3647 4 byte

I tipi di dati money e smallmoney sono caratterizzati da una precisione pari a dieci millesimi delle unità monetarie rappresentate. Per Informatica i tipi di dati money e smallmoney sono caratterizzati da una precisione pari a un centesimo delle unità monetarie rappresentate.

Per separare le unità di valuta parziali, ad esempio i centesimi, da quelle intere, utilizzare il punto. Ad esempio, 2.15 specifica 2 dollari e 15 centesimi.

È possibile utilizzare questi tipi di dati per i simboli di valuta illustrati di seguito.

Symbol Currency Valore esadecimale
$ Segno del dollaro 0024
¢ Cartello del centesimo 00A2
£ Cancelletto 00A3
¤ Segno di valuta 00A4
¥ Segno Yen 00A5
৲ Rupia del Bengali 09F2
৳ Rupe del Bengali 09F3
฿ Simbolo di valuta thai 0E3F
៛ Simbolo di valuta Dei Riel 17DB
₠ Segno di valuta euro 20A0
₡ Segno dei due punti 20A1
₢ Cartello Cruzeiro 20A2
₣ Segno franco francese 20A3
₤ Cartello di lira 20A4
₥ Insegna del mulino 20A5
₦ Insegna Naira 20A6
₧ Insegna di Peseta 20A7
₨ Segno della rupia 20A8
₩ Cartello vincente 20A9
₪ Nuovo segno sheqel 20AA
₫ Cartello Dong 20AB
€ Segno dell'euro 20AC
₭ Segno Kip 20AD
₮ Segno di Tugrik 20AE
₯ Segno di dracma 20AF
₰ Segno tedesco Penny 20B0
₱ Segno del peso 20B1
﷼ Insegna Rial FDFC
﹩ Piccolo segno di dollaro FE69
$ Segno di dollaro a larghezza intera FF04
¢ Segno Cent a larghezza intera FFE0
£ Segno cancelletto a larghezza intera FFE1
¥ Segno yen a larghezza intera FFE5
₩ Segno vinto a larghezza intera FFE6

Non è necessario racchiudere i dati monetari o di valuta tra virgolette singole ('). Sebbene sia possibile specificare i valori monetari preceduti da un simbolo di valuta, SQL Server non archivia informazioni di valuta associate al simbolo, ma archivia solo il valore numerico.

Warning

È possibile riscontrare errori di arrotondamento tramite troncamento, quando si archiviano valori monetari come denaro e smallmoney. Evitare di usare questo tipo di dati se i valori money o currency vengono usati nei calcoli. Usare invece il tipo di dati decimal con almeno quattro posizioni decimali.

Convertire i dati money

Nella conversione dal tipo di dati Integer a money le unità vengono interpretate come unità di valuta. Ad esempio, il valore intero di 4 viene convertito nell'equivalente money di 4 unità monetarie.

Nell'esempio seguente i valori smallmoney e money vengono convertiti rispettivamente nei tipi di dati varchar e decimal.

DECLARE @mymoney_sm SMALLMONEY = 3148.29,
    @mymoney MONEY = 3148.29;

SELECT CAST(@mymoney_sm AS VARCHAR(20)) AS 'SM_MONEY VARCHAR(20)',
    CAST(@mymoney AS DECIMAL) AS 'MONEY DECIMAL';

Il set di risultati è il seguente. Poiché il tipo decimale nell'esempio non ha una scala, il valore viene troncato.

SM_MONEY VARCHAR(20)           MONEY DECIMAL
------------------------------ ----------------------
3148.29                        3148