我目前正在编写一个标量值函数,我对返回的结果有一些问题。
我已将问题缩小到将两个日期之间的差异转换为百分比/小数的计算。无论我尝试什么,返回值总是一个整数
set @earnedpremium = (@premium * @pretripearnings) + ((@premium - (@premium * @pretripearnings)) * cast((datediff(day, @outdate, @experiencedate) / datediff(day, @outdate, @returndate))as decimal(5,2)))
演员表需要返回百分比,我知道其余部分通过一些消除和测试工作正常。
有人可以帮我弄清楚我做错了什么?答案 0 :(得分:1)
这是因为DATEDIFF返回一个INTEGER,所以你需要将该操作的两个部分都转换为DECIMAL:
set @earnedpremium = (@premium * @pretripearnings) + ((@premium - (@premium * @pretripearnings))
* (CAST(datediff(day, @outdate, @experiencedate) AS DECIMAL(5,2)) /
CAST(datediff(day, @outdate, @returndate) AS DECIMAL(5,2)))