Sql server 2005 SQL四舍五入到7位,即使其设置为十进制(18,4))

Sql server 2005 SQL四舍五入到7位,即使其设置为十进制(18,4)),sql-server-2005,rounding,Sql Server 2005,Rounding,即使小数位数设置为4,它也会返回 3.5333333 而不是 3.5333 请帮我返回3.5333(小数点后4位) 将/60放在cast中,并将其更改为60.0以获得小数 select (cast(datediff(minute,'1900-01-01 07:03:00.000' ,'1900-01-01 10:35:00.000') as decimal(18,4))/60) 将/60放在cast中,并将其更改为60.0以获得小数 select (cast(datediff(minute,

即使小数位数设置为4,它也会返回 3.5333333 而不是 3.5333

请帮我返回3.5333(小数点后4位)


将/60放在cast中,并将其更改为60.0以获得小数

select (cast(datediff(minute,'1900-01-01 07:03:00.000' ,'1900-01-01 10:35:00.000')

as decimal(18,4))/60)

将/60放在cast中,并将其更改为60.0以获得小数

select (cast(datediff(minute,'1900-01-01 07:03:00.000' ,'1900-01-01 10:35:00.000')

as decimal(18,4))/60)

您需要在铸造之前完成您的划分:

select (cast(datediff(minute,'1900-01-01 07:03:00.000' ,'1900-01-01 10:35:00.000')/60.0

as decimal(18,4)))
然后你会得到:

select 
   cast(datediff(minute, '1900-01-01 07:03:00.000', '1900-01-01 10:35:00.000') / 60.0 
        as decimal(18,4))

转换为十进制(18,4),然后进行60除法运算,这会使格式无效-SQL Server将再次显示该除法的所有数字精度,并将其转换为60…

在转换之前,您需要进行除法运算:

select (cast(datediff(minute,'1900-01-01 07:03:00.000' ,'1900-01-01 10:35:00.000')/60.0

as decimal(18,4)))
然后你会得到:

select 
   cast(datediff(minute, '1900-01-01 07:03:00.000', '1900-01-01 10:35:00.000') / 60.0 
        as decimal(18,4))
转换为十进制(18,4),然后进行60除法,这会使格式无效-SQL Server将再次将该除法的所有数字精度显示为60