Продолжительность времени между двумя датами - PullRequest
0 голосов
/ 05 мая 2011

мне нужно получить продолжительность в формате (чч: мм: сс) между двумя датами

2011/05/05 11:45:02 и 2011/05/01 08:09:57

Например, если бы у меня были эти две даты 2011/05/05 01:18:14 и 2011/05/05 11:00:00, результат был бы: 02:18:14

Ответы [ 3 ]

3 голосов
/ 31 июля 2012
DECLARE @dt1 datetime

DECLARE @dt2 datetime

SELECT @dt1 = '2011-05-05 11:45:02', @dt2 = '2011-05-05 08:09:57'

SELECT CONVERT(VARCHAR(8),@dt1-@dt2,108)


-- RESULT IS : 03:35:05
0 голосов
/ 05 мая 2011

Попробуйте это:

declare @date1 datetime='2011/05/05 01:18:14', @date2 datetime='2011/05/05 11:00:00'
select CAST((@date2-@date1) as time(0))

Здесь важен порядок элементов в выписке. В противном случае вы получите 24 часа - ваше время.

0 голосов
/ 05 мая 2011

Насколько я знаю, в SQL (или TSQL) нет типа данных DATETIME_INTERVAL, поэтому единственный способ сделать это - вручную отформатировать результат функции DATEDIFF .

 declare @hours as int
 declare @minutes as int
 declare @seconds as int
 declare @time_interval as nvarchar(10)

 set @hours =  DATEDIFF(ss,'2011/05/05 01:18:14', '2011/05/05 11:00:00') / 3600
 set @minutes = (DATEDIFF(ss,'2011/05/05 01:18:14', '2011/05/05 11:00:00') - @hours*3600)/60
 set @seconds = DATEDIFF(ss,'2011/05/05 01:18:14', '2011/05/05 11:00:00') - @hours*3600 - @minutes * 60

 set @time_interval = (cast(@hours as nvarchar) +':'+ cast(@minutes as nvarchar)+':'+ cast(@seconds as nvarchar))

print @time_interval
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...