Я предполагаю, что вы включаете даты ... (?)
Вот пример, который я запустил - похоже, работает как ожидалось:
declare @start datetime
declare @end datetime
set @start = '2011-09-06 23:17:27'
set @end = '2011-09-07 00:31:23'
select
datediff(second,@start,@end) as seconds,
datediff(minute,@start,@end) as minutes,
datediff(hour,@start,@end) as hours,
datediff(day,@start,@end) as days,
datediff(month,@start,@end) as months,
datediff(year,@start,@end) as years
Вот результаты:
seconds minutes hours days months years
----------- ----------- ----------- ----------- ----------- -----------
4436 74 1 1 0 0
(1 row(s) affected)
Одна вещь, которую вы можете сделать, это перепроверить объем вашего десятичного преобразования.Например: это приводит к разным результатам, в зависимости от того, куда вы положили символы перед разделением:
declare @start datetime
declare @end datetime
set @start = '2011-09-06 23:17:27'
set @end = '2011-09-07 00:31:23'
select convert(decimal(18,0), (datediff(ss,@start,@end)))/60.00/60.00 as NEW_processTime,
convert(decimal(18,0), (datediff(ss,@start,@end)/60.00/60.00)) as ORIGINAL_processTime
Вот результаты этого:
NEW_processTime ORIGINAL_processTime
--------------------------------------- ---------------------------------------
1.23222221666 1
(1 row(s) affected)