2014-11-25 42 views
2

当我在SQL Server中的SELECT语句中使用DateDiff,我得到一个int值回:问题有则DateDiff /铌在SQL Server

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 

Res ULT是:8.00

但在现实的结果是:8.9333333

我怎样才能改变结果从intDouble

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

回答

3

问题是你在分割后使用CAST。如果您在CAST后执行除法,你会得到答案,你想:

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

谢谢您的回答,其正确的:) – 2014-11-25 11:25:29

3

您需要先投你的投入划分为十进制:

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

否则,你将一整数由一个整数 - 你会得到一个整数。如果你在分割后将这个数字转换成小数点,你将得到8.0。

+0

谢谢您的回答,它的吧:) – 2014-11-25 11:26:52

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

感谢所有,你的答案是正确的:) – 2014-11-25 11:24:39