money e smallmoney (Transact-SQL)
si applica a:SQL Server
database SQL di Azure
Istanza gestita di SQL di Azure
Azure Synapse Analytics
Analytics Platform System (PDW)
database SQL in Microsoft Fabric
Tipi di dati che rappresentano valori monetari o valutari.
Osservazioni:
Tipo di dati | Intervallo | 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.
Simbolo | Valuta | Valore esadecimale |
---|---|---|
$ | Simbolo del dollaro | 0024 |
¢ | Segno cent | 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 due punti | 20A1 |
₢ | Segno cruzeiro | 20A2 |
₣ | Segno franco francese | 20A3 |
₤ | Segno di Lira | 20A4 |
₥ | Segno di mill | 20A5 |
₦ | Segno naira | 20A6 |
₧ | Segno di Peseta | 20A7 |
Rs | Segno di rupia | 20A8 |
₩ | Segno vinto | 20A9 |
₪ | Nuovo segno sheqel | 20AA |
₫ | Segno di Dong | 20AB |
€ | Segno euro | 20AC |
₭ | Segno kip | 20AD |
₮ | Segno tugrik | 20AE |
₯ | Segno Drachma | 20AF |
₰ | Segno tedesco Penny | 20B0 |
₱ | Segno peso | 20B1 |
﷼ | Firma 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.
Avviso
È 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