Partilhar via


money e smallmoney (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)

Tipos de dados que representam valores monetários ou de moeda.

Comentários

Tipo de dados Intervalo Armazenamento
money -922.337.203.685.477,5808 a 922.337.203.685.477,5807 (-922.337.203.685.477,58
a 922.337.203.685.477,58 para o Informatica. O Informatica dá suporte apenas a dois decimais, não quatro.)
8 bytes
smallmoney -214,748.3648 a 214,748.3647 4 bytes

Os tipos de dados money e smallmoney têm a precisão de dez milésimos das unidades monetárias que eles representam. Para o Informatica, os tipos de dados money e smallmoney têm a precisão de um centésimo das unidades monetárias que eles representam.

Use um ponto para separar unidades monetárias parciais, como centavos, de unidades monetárias inteiras. Por exemplo, 2.15 especifica 2 dólares e 15 centavos.

Esses tipos de dados podem usar qualquer um dos seguintes símbolos de moeda.

Símbolo Moeda Valor hexadecimal
$ Cifrão 0024
¢ Sinal de centavo 00A2
£ Sustenido 00A3
¤ Sinal de moeda 00A4
¥ Sinal do iene 00A5
Marco da rupia bengali 09F2
Sinal de rupia bengali 09F3
฿ Símbolo da moeda do baht tailandês 0E3F
Símbolo da moeda Khmer Riel 17DB
Sinal da moeda do euro 20A0
Sinal do cólon 20A1
Sinal do Cruzeiro 20A2
Sinal do franco francês 20A3
Sinal de Lira 20A4
Sinal do moinho 20A5
Sinal de Naira 20A6
Sinal de Peseta 20A7
RS Sinal de rúpia 20A8
Sinal de won 20A9
Novo sinal Shekel 20AA
Sinal de dong 20AB
Sinal do euro 20AC
Sinal de Kip 20AD
Sinal de Tugrik 20AE
Sinal de dracma 20AF
Sinal alemão da moeda de um centavo 20B0
Sinal de peso 20B1
Sinal de Rial FDFC
Sinal de dólar pequeno FE69
Sinal de dólar de largura total FF04
Sinal de centavo de largura total FFE0
sinal de libra de largura total FFE1
Sinal de iene de largura total FFE5
Sinal de Won de largura total FFE6

Você não precisa colocar a moeda ou os dados monetários entre aspas simples ('). Embora você possa especificar valores monetários precedidos por um símbolo de moeda, o SQL Server não armazena nenhuma informação de moeda associada ao símbolo, ele armazena apenas o valor numérico.

Aviso

Você pode experimentar erros de arredondamento por meio de truncamento, ao armazenar valores monetários como dinheiro e dinheiro pequeno. Evite usar esse tipo de dados se seus valores monetários ou monetários forem usados em cálculos. Em vez disso, use o tipo de dados decimal com pelo menos quatro casas decimais.

Converter dados monetários

Ao fazer a conversão em money de tipos de dados inteiro, presume-se que as unidades estejam em unidades monetárias. Por exemplo, o valor inteiro de 4 é convertido para o equivalente monetário de 4 unidades monetárias.

O exemplo a seguir converte os valores smallmoney e money nos tipos de dados varchar e decimal, respectivamente.

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

Veja a seguir o conjunto de resultados. Como o tipo decimal no exemplo não tem uma escala, o valor é truncado.

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