2015-08-31 2 views
0

Допустим, я получаю 8048 секунд для моего SQL кода:SQL Кастинг с Десятичные

SUM(DATEDIFF(s, '8/25/2015', '8/26/2015')) as 'Seconds' 

Как я могу получить тот же ответ, за несколько минут и часов ... но они будут десятичное? Часовто:

Cast(((SUM(DATEDIFF(s, '8/25/2015', '8/26/2015'))/60.00)/60.00) as decimal(8,2)) as 'Hours' 

Но я продолжаю получать 2,00 часа .... когда это должно быть 2,34 часа?

+4

Датированный срок, указанный вами, составляет 24 часа (1 день). Так почему вы хотите, чтобы он составлял 2,34 часа? Вероятно, образец в вашем вопросе неверен. –

+0

Результаты поиска неверны: первый возвращает '86400' секунд. Второй возвращает '24.00' не' 2.00' часов. – FutbolFan

+0

Я понимаю, что это 1день .. Я говорил, например ... Если это было 8048 секунд ... –

ответ

0

Попробуйте переместив CAST заявление внутрь SUM():

CAST((SUM(CAST(DATEDIFF(s, [date1], [date2]) AS Decimal(20,2))/60.00)/60.00)) AS Decimal(20,2)) as 'Hours' 

Путь вы его создали сейчас, значение, вероятно, округлый, прежде чем даже бросить его

+0

Правильно, спасибо! –

1

DATEDIFF возвращает интервал. CAST это как float или decimal, чтобы получить десятичный результат из вашей математической формулы:

Cast(((SUM(CAST(DATEDIFF(s, '8/25/2015', '8/26/2015') AS decimal(8,2))/60.00)/60.00) as decimal(8,2)) as 'Hours' 
+0

Спасибо! @Tab Alleman –

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