当我在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
- 我该怎么做?
答案 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