Типы money и smallmoney (Transact-SQL)

Область применения:SQL ServerБаза данных SQL AzureУправляемый экземпляр SQL AzureAzure Synapse AnalyticsБаза данных SQL в Microsoft Fabric

Типы данных, представляющие денежные (валютные) значения.

Remarks

Тип данных Range Storage
money От –922,337,203,685,477.5808 до 922,337,203,685,477.5807 (от –922,337,203,685,477.58
до 922,337,203,685,477.58 в Informatica. В Informatica поддерживается только два десятичных знака, а не четыре)
8 байт
smallmoney -214 748,3648 до 214 748,3647 4 байта

Типы данных money и smallmoney имеют точность до одной десятитысячной денежной единицы, которую они представляют. В Informatica типы данных money и smallmoney имеют точность до одной сотой денежной единицы, которую они представляют.

Чтобы отделить дробные денежные единицы, например центы, от целых денежных единиц, используйте запятую. Например, 2.15 указывает 2 доллара и 15 центов.

Для этих типов данных может использоваться любой из следующих символов валют.

Symbol Currency Шестнадцатеричное значение
$ Знак доллара 0024
¢ Знак цента 00A2
£ Решётка 00A3
¤ Знак валюты 00A4
¥ Знак йены 00A5
৲ Бенгали рупийный знак 09F2
৳ Знак Бенгали Рупии 09F3
฿ Символ валюты Тайского Бата 0E3F
៛ Символ валюты «Кхмер Риэль» 17DB
₠ Знак валюты евро 20A0
₡ Двоеточие 20A1
₢ Знак Крузейро 20A2
₣ Французский знак Франка 20A3
₤ Знак лиры 20A4
₥ Знак мельницы 20A5
₦ Знак Найра 20A6
₧ Знак песеты 20A7
₨ Знак рупий 20A8
₩ Знак Вон 20A9
₪ Новый знак Sheqel 20AA
₫ Знак донг 20AB
€ Знак евро 20AC
₭ Знак Кип 20AD
₮ Знак Тугрика 20AE
₯ Знак драхмы 20AF
₰ Немецкий знак Пенни 20B0
₱ Знак песо 20B1
﷼ Риальный знак FDFC
﹩ Маленький знак доллара FE69
$ Знак доллара полной ширины FF04
¢ Знак Цента полной ширины FFE0
£ Знак фунта полной ширины FFE1
¥ Знак йены полной ширины FFE5
₩ Знак "Полная ширина" FFE6

Не нужно заключать денежные или денежные данные в одинарные кавычки ('). Хотя вы можете указать денежные значения, предшествующие символу валюты, SQL Server не сохраняет ни одну валюту, связанную с символом, она сохраняет только числовое значение.

Warning

При хранении денежных значений в виде денег и небольших денег можно столкнуться с округлением ошибок. Избегайте использования этого типа данных, если в вычислениях используются ваши деньги или денежные значения. Вместо этого используйте десятичный тип данных с по крайней мере четырьмя десятичными разрядами.

Преобразование данных о деньгах

При преобразовании типа данных integer в тип money используются денежные единицы. Например, целочисленное значение 4 преобразуется в денежный эквивалент 4 денежных единиц.

В следующем примере выполняется преобразование значений типов smallmoney и money в значения типов varchar и 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';

Вот результирующий набор. Так как десятичный тип в примере не имеет шкалы, это значение усечено.

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