2010-01-19 3 views
0

У меня есть два поля даты с times.They являютсяНайти длительность

1.2008-06-09 10: 18: 00,000

2.2008-06-10 11: 20: 00,000

У меня есть найти разницу между указанными двумя датами в формате -

«24 часа: 2 минуты: 0 секунд»

есть ли способ, чтобы получить этот результат в SQL Server 2000?

+0

Если это не будет 25 часов? – gbn

ответ

2

Нет фантазию ответа в SQL Server 2000 ...

DECLARE @d1 datetime, @d2 datetime 

SELECT @d1 = '2008-06-09 10:18:00.000', @d2 = '2008-06-10 11:20:00.000' 

SELECT 
    CAST(DATEDIFF(hour, @d1, @d2) AS varchar(30)) + ' hours, ' + 
    CAST(DATEDIFF(minute, @d1, @d2) % 60 AS varchar(30)) + ' minutes, ' + 
    CAST(DATEDIFF(second, @d1, @d2) % 3600 % 60 AS varchar(30)) + ' seconds' 

Необходимо модули удалить часы и минуты, уже рассчитанные

+0

Я считаю, что вам нужно учитывать пересечение границ, когда меньший блок меньше в '@ d2', а затем' @ d1'. Например, измените минуты в '@ d2' на 15 и проверьте свои результаты. –

+1

Эти изменения должны работать: 'CAST (DATEDIFF (второй, @ d1, @ d2)/3600 AS varchar (30)) + 'hours,' + CAST (DATEDIFF (второй, @ d1, @ d2)/60% 60 AS varchar (30)) + 'minutes,' + CAST (DATEIFF (второй, @ d1, @ d2)% 3600% 60 AS varchar (30)) + 'seconds'' –

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