Udostępnij za pośrednictwem


money and smallmoney (Transact-SQL)

Dotyczy:sql ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Database w usłudze Microsoft Fabric

Typy danych reprezentujące wartości pieniężne lub walutowe.

Uwagi

Typ danych Zakres Składowanie
pieniędzy -922,337,203,685,477,5808 do 922,337,203,685,477.5807 (-922,337,203,685,477,588
do 922,337,203,685,477,58 dla Informatica. Informatica obsługuje tylko dwie liczby dziesiętne, a nie cztery.
8 bajtów
małe -214,748.3648 do 214,748.3647 4 bajty

Typy danych i małych są dokładne w dziesiątej tysięcy jednostek pieniężnych, które reprezentują. Dla Informatica i małych typy danych są dokładne dla jednej setnej jednostek pieniężnych, które reprezentują.

Użyj okresu, aby oddzielić częściowe jednostki pieniężne, takie jak centy, od całych jednostek pieniężnych. Na przykład 2.15 określa 2 dolary i 15 centów.

Te typy danych mogą używać dowolnego z następujących symboli waluty.

Symbol Waluta Wartość szesnastkowa
$ Znak dolara 0024
¢ Znak centa 00A2
£ Znak funta 00A3
¤ Znak waluty 00A4
¥ Znak jena 00A5
Rupia bengalska 09F2
Znak rupii bengalskiej 09F3
฿ Tajlandzki symbol waluty 0E3F
Symbol waluty Khmer Riel 17DB
Znak waluty euro 20A0
Znak dwukropka 20A1
Znak Cruzeiro 20A2
Francuski znak franka 20A3
Znak Lira 20A4
Znak młyna 20A5
Znak Naira 20A6
Znak Peseta 20A7
Rs Znak rupii 20A8
Znak wygranej 20A9
Nowy znak Sheqel 20AA
Znak dongu 20AB
Znak euro 20AC
Znak Kip 20AD
Znak Tugrik 20AE
Znak drachma 20AF
Niemiecki znak Penny 20B0
Znak peso 20B1
Znak Rial FDFC
Mały znak dolara FE69
Znak dolara o pełnej szerokości FF04
Znak centowy o pełnej szerokości FFE0
Znak funta o pełnej szerokości FFE1
Znak jena o pełnej szerokości FFE5
Znak o pełnej szerokości Won FFE6

Nie musisz ująć waluty ani danych pieniężnych w pojedynczy cudzysłów ('). Chociaż można określić wartości pieniężne poprzedzone symbolem waluty, program SQL Server nie przechowuje żadnych informacji o walucie skojarzonych z symbolem, ale przechowuje tylko wartość liczbową.

Ostrzeżenie

Błędy zaokrąglania można napotkać za pomocą obcinania, podczas przechowywania wartości pieniężnych i małych. Unikaj używania tego typu danych, jeśli w obliczeniach są używane wartości pieniężne lub walutowe. Zamiast tego użyj typu danych dziesiętnego z co najmniej czterema miejscami dziesiętnymi.

Konwertowanie danych pieniężnych

W przypadku konwersji na pieniądze z typów danych całkowitych przyjmuje się, że jednostki są w jednostkach pieniężnych. Na przykład wartość całkowita 4 jest konwertowana na pieniężne odpowiednik 4 jednostek pieniężnych.

Poniższy przykład konwertuje małe i wartości pieniędzy na varchar i typy danych dziesiętnych.

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

Oto zestaw wyników. Ponieważ typ dziesiętny w przykładzie nie ma skalowania, wartość jest obcięta.

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