SQL Server中的DateDiff / Nb问题

时间:2014-11-25 10:15:58

标签: sql sql-server casting datediff

当我在SQL Server中的DateDiff语句中使用SELECT时,我得到int值:

select DATEDIFF(day,'01/01/2011','15/05/2011') 
from Table1

结果是:134

select DATEDIFF(day,'01/01/2011','15/05/2011')/15 
from Table1

结果是:8

select cast(DATEDIFF(day,'01/01/2011','15/05/2011') / 15 as Decimal(9,2)) 
from Table1

结果是:8.00

但实际上结果是: 8.9333333

如何将结果从int更改为Double

我想得到结果8.9333333 - 我该怎么做?

3 个答案:

答案 0 :(得分:3)

问题是您在分割后使用CAST。如果您在CAST之后执行除法,那么您将获得所需的答案:

select 
   cast(DATEDIFF(day,'01/01/2011','15/05/2011') as Decimal(9,2))/15 
from Table1

答案 1 :(得分:3)

您需要首先将输入转换为小数:

select cast(DATEDIFF(day,'2011-01-01','2011-05-15') as Decimal(9,2))/15.0 

否则你将整数除以整数 - 你将得到一个整数。如果你在除法后将其转换为小数,那么你将获得8.0。

答案 2 :(得分:1)

SELECT CAST(DATEDIFF(day,'01/01/2011','15/05/2011') AS Decimal(9,2))/15 
FROM Table1