2014-11-25 3 views
2

Когда я использую DateDiff в SELECT заявление в SQL Server, я получаю int значение обратно:Проблема с DateDiff/Nb в 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 щ является: 8.00

Но в действительности результат: 8,9333333

Как я могу изменить результат от int к Double?

Я хочу получить результат 8.9333333 - как я могу это сделать?

ответ

3

Проблема в том, что вы используете CAST после деления. Если выполнить деление после CAST, вы получите ответ, который вы хотите:

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

Спасибо за ваш ответ, его правильного :) –

3

Вы должны отдать свой вклад в разделение, как десятичное первый:

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

В противном случае вы Деление integer целым числом - вы получите целое число. Если затем вы разделите это на десятичный после деления, вы получите 8.0.

+0

Спасибо за ваш ответ, его право :) –

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

Спасибо всем, все ваши правильные ответы :) –

Смежные вопросы