2011-01-04 20 views
0

Ich schreibe gerade eine skalare Funktion und ich habe ein paar Probleme mit dem zurückgegebenen Ergebnis.Rückgabe datediff als Dezimal/Prozent

ich habe das Problem auf eine Berechnung eingegrenzt, die die Differenz zwischen zwei Daten in Prozent/Dezimal konvertieren. egal, was ich der Rückgabewert versuchen immer eine ganze Zahl

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

der gegossene Abschnitt muss den Prozentsatz zurück, weiß, dass ich den Rest fein durch einige Beseitigung und Prüfung arbeitet.

kann mir bitte jemand helfen, herauszufinden, was ich falsch mache ??

Antwort

1

Es ist, weil DATEDIFF einen Integer zurückgibt und so müssen Sie beide Teile dieser Operation zu DECIMAL würfen

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))) 
+0

Danke. Wie immer funktioniert die Logik in meinem Kopf, aber die Syntax entzieht sich mir .. –