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.