select Convert(int,GETDATE()-(dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)))) / Convert(int,datediff(day,dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)),dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))+1))
代码如上,为什么在进行计算的时候返回的永远都是‘0’,而我在EXCEL中进行计算的时候是0.19125683的值,求大神指点,在线等!!!!!
这个SQL代码中,除法运算的两个操作数都是整型(int),而整型除法运算结果永远只保留整数部分,不会保留小数部分。比如,1除以2,结果是0而不是0.5。因此,你得到的结果为0,与你在Excel中得到的结果不同。
如果你想得到精确的小数结果,在除数或者被除数之前添加一个cast或convert函数来将整数类型转换为带有小数点的浮点类型即可。比如:
SELECT CAST(Convert(int, GETDATE() - (dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)))) AS FLOAT)
/ CAST(datediff(day,dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)),dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))+1) AS FLOAT)
这样应该会得到你在Excel中观察到的数值。