理論が成り立つかどうかはわかりませんが、型の内部ストレージを見つけるには、SQLと少し理解することで実現できます。私はブログの新しいdatetime2/datetimeoffsetに対してこれを行い、内部バイナリ形式を具体的に取得しました。これは、それらがどのように追加の精度を取得するかを確認するためです。
お金の例として
declare @test money
set @test = 12.34
select @test -- shows 12.34 as expected
declare @binaryValue binary(8)
set @binaryvalue = convert(binary(8),@test)
select @binaryvalue
出力:0x000000000001E208
つまり、10進数と見なすと123400であり、お金は小数点以下4桁に格納されるため、値として12.3400を示します。これを逆にすると、理論的には、16進数で1の値は0.0001になります。
declare @test money
declare @binaryValue binary(8)
set @binaryvalue = 0x0000000000000001
set @test = convert(money,@binaryvalue)
select @test
出力0.0001
次にチェックするのは負の数です。
declare @test money
set @test = -12.34
select @test -- shows -12.34 as expected
declare @binaryValue binary(8)
set @binaryvalue = convert(binary(8),@test)
select @binaryvalue
出力:0xFFFFFFFFFFFE1DF8
FFから番号を取り除いただけなので、署名された8バイトの番号のように見えます...など。-0.0001を使用したクイックチェックでは、すべての0xFFF .... FFFが期待どおりに出力され、-0.0002で0xFF....FFEが期待どおりに出力されます。
これがBCPに当てはまるかどうかはわかりませんが、内部ストレージ形式として、小数点以下4桁を想定した符号付き8バイト整数を推測します。