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

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics AnalyticsPlatform System (PDW)

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

Замечания

Тип данных Диапазон Хранилище
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 центов.

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

Символ Валюта Шестнадцатеричное значение
$ Знак доллара 0024
¢ Знак цента 00A2
£ Знак Фунта 00A3
¤ Знак валюты 00A4
¥ Знак йена 00A5
Бенгали рупийный знак 09F2
Знак Бенгали Рупии 09F3
฿ Символ валюты Тайского Бата 0E3F
Символ валюты «Кхмер Риэль» 17DB
Знак валюты евро 20A0
Знак двоеточия 20A1
Знак Крузейро 20A2
Французский знак Франка 20A3
Знак Лиры 20A4
Знак Милли 20A5
Знак Найра 20A6
Знак Песеты 20A7
Rs Знак рупии 20A8
Знак "Выиграл" 20A9
Новый знак Sheqel 20AA
Знак Dong 20AB
Знак Евро 20AC
Знак Kip 20AD
Знак Тугрик 20AE
Знак Drachma 20AF
Немецкий знак Пенни 20B0
Знак Peso 20B1
Знак Риала FDFC
Маленький знак доллара FE69
Знак доллара полной ширины FF04
¢ Знак Цента полной ширины FFE0
£ Знак фунта полной ширины FFE1
¥ Знак йены полной ширины FFE5
Знак "Полная ширина" FFE6

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

Предупреждение

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

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

При преобразовании типа данных 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