SQL Server Typ PIENIĄDZE

Jaka jest różnica między pieniędzmi a dziesiętnego (19,4)

8

02 czerwca 2014 przez Kenneth Fisher

Jeden z moich współpracowników i ja omawialiśmy różnicę między PIENIĘDZY typu danych i typu danych DECIMAL (19,4). Byłem dość ciekawy więc spędziłem trochę czasu coraz to wszystko na papierze.

Detale

Po pierwsze, co oczywiste. PIENIĄDZE zajmuje 8 bajtów i zapisuje maksymalne możliwe wartości możliwych do 8 bajtów. 2 ^ 64 lub -922,337,203,685,477.5808 do 922,337,203,685,477.5807. Dziesiętnego (19,4) będzie przechowywać dowolną wartość, która będzie pasować do pieniędzy, a następnie niektóre, ale zajmuje 9 bajtów. Ułamek dziesiętny (19,4) może posiadać szereg -999,999,999,999,999.9999 do 999,999,999,999,999.9999. Jest to w rzeczywistości znacznie mniejsza niż 2 ^ 72 (8 bitów) * 9bytes lub -236,118,324,143,482,260.6848 do 236,118,324,143,482,260.6847 faktycznie mogą być przechowywane w 9 bajtów.
Następny coś ciekawego spróbować

CREATE TABLE MoneyTest (	Mon1 money, Mon2 AS Mon1*Mon1, Mon3 AS Mon1*Mon1*Mon1,	Dec1 decimal(19,4), Dec2 AS Dec1*Dec1, Dec3 AS Dec1*Dec1*Dec1,	MonDec AS Mon1*Dec1, DecMon AS Dec1*Mon1);
GO
EXEC sp_help MoneyTest;
GO

Przy wyjściu

MoneyVsDecimal1

Jeśli spojrzeć na długości, precyzja i skala będzie można zauważyć, że zmieniają one dla każdego z obliczonych kolumn, które korzystają z kolumny po przecinku. To dlatego, że jeśli (przykładowo) pomnożyć ułamek dziesiętny (4,2) razy kolejna dziesiętnych (4,2) można skończyć z ułamek dziesiętny (8,4). Zatrzymuje się Precision 38, ponieważ jest to maksymalna wielkość typu danych dziesiętnych. Typ danych PIENIĄDZE jednak nie zmienia po pomnożeniu przez siebie.

Podsumowanie
RozmiarmniemaxPrecyzja
pieniądze8-922,337,203,685,477.5808922,337,203,685,477.5807Statyczny
Dziesiętna (19,4)9-999,999,999,999,999.9999999,999,999,999,999.9999Zmiany
smallmoney4-214,748.3648214,748.3647Naprawiony
Dziesiętna (10,4)9-999,999.9999999,999.9999Zmiany
Czytaj więcej:   program automatycznie wyszuka dla kierowcy TELEFON

Tak więc główną różnicą jest to, że typy danych Pieniądze są mniejsze, ale mają stały rozmiar. Dziesiętny z drugiej strony zajmuje więcej miejsca i kiedy mnożąc rozmiar, precyzji i skali zamierzamy zmienić. Osobiście to znaczy, że idę do kwot faktur historia (na przykład) za pieniądze (lub nawet smallmoney gdzie mogę) i stawki podatku jako ułamek dziesiętny.

| Tagi: język kod języka SQL, Microsoft SQL Server, SQL, T-SQL

Wybierz swój język

polskiangielski niemiecki hiszpański francuski włoski portugalski turecki arabski ukraiński szwedzki węgierski bułgarski estoński Chiński (uproszczony) wietnamski rumuński tajski słoweński słowacki serbski malajski norweski łotewski litewski koreański japoński indonezyjski hinduski hebrajski fiński grecki holenderski Czech duński chorwacki Chiński (tradycyjny) Filipińska urdu Azeybardzhansky ormiański Białoruski bengalski gruziński kazachski Kataloński mongolski rosyjski Tadzhitsky Tamil'skij telugu Uzbetsky


Dodaj komentarz

Twój e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *