Equation continue de renvoyer int dans SQL Server

Avec la requête select ci-dessous:

 SELECT DATEDIFF(day, cd.LastTestDate, cd.date) / 365.0 AS DateDifference, CAST(1.0 - (cd.DeclRate * ((DATEDIFF(day, cd.LastTestDate, cd.date))/365.0))AS FLOAT) AS DeclRate FROM V_INT_PROD_PLAN2 cd 

J'ai le résultat suivant:

 DateDifference DeclRate 0.000000 1 0.002739 1 0.005479 1 

Comment puis-je get la deuxième colonne pour returnner en décimal? Tous les pointeurs seraient très appréciés.

L'une des valeurs de la deuxième colonne vous donne une valeur qui aboutit à un int , qui à son tour convertit la sortie en int . Voir les exemples ci-dessous:

 DECLARE @DeclRate AS NUMERIC(20, 8); DECLARE @FromDate AS DATETIME; DECLARE @ToDate AS DATETIME; SET @DeclRate = 0.000000123; SET @FromDate = GETDATE(); SET @ToDate = GETDATE() + 1; -- not int result SELECT CAST(1.0 - (@DeclRate * ((DATEDIFF(DAY, @FromDate, @ToDate)) / 365.0)) AS FLOAT) AS DeclRate; -- set variable to 0 value SET @DeclRate = 0.0000; -- output is int result SELECT CAST(1.0 - (@DeclRate * ((DATEDIFF(DAY, @FromDate, @ToDate)) / 365.0)) AS FLOAT) AS DeclRate; -- set dates to be same day SET @ToDate = GETDATE(); SET @DeclRate = 0.000000123; -- output is int result SELECT CAST(1.0 - (@DeclRate * ((DATEDIFF(DAY, @FromDate, @ToDate)) / 365.0)) AS FLOAT) AS DeclRate; 

Mon soupçon est que la comparaison de dates que vous faites est de comparer des dates qui sont les mêmes, donc @DeclRate * (datediff... se traduira toujours par 0 en sortie.