вернуть дату в десятичном виде / процент - PullRequest
0 голосов
/ 04 января 2011

Я сейчас пишу скалярную функцию и у меня возникли некоторые проблемы с возвращаемым результатом.

Я сузил проблему до вычисления, которое преобразует разницу между двумя датами в процентах / десятичных числах.Независимо от того, что я пытаюсь, возвращаемое значение всегда является целым числом

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

разделу приведения должен возвращать процент, я знаю, что остальное работает нормально после некоторого исключения и тестирования.

Может кто-нибудь помочь мне понять, что я делаю не так?

1 Ответ

1 голос
/ 04 января 2011

Это потому, что 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)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...