Jasonchne 2021-03-11 16:49 采纳率: 50%
浏览 25

SQL中除法运算报错,求指导

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的值,求大神指点,在线等!!!!!

  • 写回答

1条回答 默认 最新

  • 憧憬blog 2023-03-14 22:54
    关注

    这个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中观察到的数值。

    评论

报告相同问题?

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c