以小数/百分比形式返回日期

时间:2011-01-04 10:43:45

标签: vb.net sql-server-2005 tsql

我目前正在编写一个标量值函数,我对返回的结果有一些问题。

我已将问题缩小到将两个日期之间的差异转换为百分比/小数的计算。无论我尝试什么,返回值总是一个整数

set @earnedpremium = (@premium * @pretripearnings) + ((@premium - (@premium * @pretripearnings)) * cast((datediff(day, @outdate, @experiencedate) / datediff(day, @outdate, @returndate))as decimal(5,2)))

演员表需要返回百分比,我知道其余部分通过一些消除和测试工作正常。

有人可以帮我弄清楚我做错了什么?

1 个答案:

答案 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)))