在SQL Server中使用精确的小数将字节转换为GB

时间:2019-04-01 14:27:00

标签: sql sql-server tsql

前2列的数据以字节为单位。我正在尝试将其从字节转换为GB。由于某些原因,它在“自由空间”列中无法正确反映

    select vmi.VMTotalMaxSize, vmi.VMTotalSize, 
CONVERT(decimal(10,2),vmi.VMTotalMaxSize/1024/1024/1024) as [VMTotalMaxSize (GB)],
CONVERT(decimal(10,2),vmi.VMTotalSize/1024/1024/1024) as [VMTotalSize (GB)],
CONVERT(decimal(10,2),(vmi.VMTotalMaxSize-vmi.VMTotalSize)/1024/1024/1024) as [VMFreeSpace (GB)]
from tbl_WLC_VMInstance vmi

VM Total Max Size:375809638400, 268435456000, 214748364800
VMTotalSize: 375683809280, 62755176448, 74662805504
VMTotalMaxSize (GB): 350.00, 250.00, 200.00
VMTotalSize (GB):349.00, 58.00, 69.00   
VMFreeSpace (GB)0.00, 191.00, 130.00

最好对数据进行适当的计算。谢谢

1 个答案:

答案 0 :(得分:2)

除以1024.0,而不是1024-否则,结果将转换为整数,从而失去小数精度。