【问题标题】:return datediff as decimal/percent以小数/百分比返回 datediff
【发布时间】:2011-01-04 10:43:45
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


    【解决方案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)))
    

    【讨论】:

      猜你喜欢
      • 2019-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-29
      • 2019-02-06
      • 2020-12-03
      • 2020-08-25
      相关资源
      最近更新 更多