Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Разница дат.  [new]
Tortuga
Member

Откуда:
Сообщений: 42
Здравствуйте. Есть таблица

declare @T table (id int, dt datetime)
insert into @T values(1,getdate())
insert into @T values(2,getdate()+0.001)
insert into @T values(3,getdate()+0.002)
insert into @T values(4,getdate()+0.003)
insert into @T values(5,getdate()+0.004)
insert into @T values(6,getdate()+0.005)

select * from @T


id dt
1 2014-09-19 10:07:17.973
2 2014-09-19 10:08:44.373
3 2014-09-19 10:10:10.773
4 2014-09-19 10:11:37.173
5 2014-09-19 10:13:03.573
6 2014-09-19 10:14:29.977


нужно найти разницу между каждыми 2мя начениями столбца dt, что-бы получилось как-то так, подскажите в каком направлении копать.
id dtdiff
1 2014-09-19 10:07:17.973null
2 2014-09-19 10:08:44.37300:01:26.4000000
3 2014-09-19 10:10:10.773null
4 2014-09-19 10:11:37.17300:01:26.4000000
5 2014-09-19 10:13:03.573null
6 2014-09-19 10:14:29.97700:01:26.4030000


Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64)
19 сен 14, 10:27    [16594239]     Ответить | Цитировать Сообщить модератору
 Re: Разница дат.  [new]
Добрый Э - Эх
Guest
Tortuga,

case/*анализировать четность нечетность строки*/ + row_number /*расчитать строки на первый-второй*/+ lead/lag /*получить доступ до значений следующей/предыдущей строки*/
19 сен 14, 10:30    [16594257]     Ответить | Цитировать Сообщить модератору
 Re: Разница дат.  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1887
select t1.id,t1.dt,cast((t1.dt- t2.dt) as time) as dt_diff
from @T t1
left outer join @T t2 on t2.id =t1.id-1 and t1.id%2=0
19 сен 14, 11:12    [16594480]     Ответить | Цитировать Сообщить модератору
 Re: Разница дат.  [new]
Tortuga
Member

Откуда:
Сообщений: 42
LexusR,спасибо за пример, получилось.
19 сен 14, 13:31    [16595507]     Ответить | Цитировать Сообщить модератору
 Re: Разница дат.  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4893
Tortuga,

Да вы с дуба рухнули на 2012 так писать

declare @T table (id int, dt datetime)
insert into @T values(1,getdate())
insert into @T values(2,getdate()+0.001)
insert into @T values(3,getdate()+0.002)
insert into @T values(4,getdate()+0.003)
insert into @T values(5,getdate()+0.004)
insert into @T values(6,getdate()+0.005)


select id, dt, cast(dt- (lag(dt, 1, null) over (order by id)) as time) as dt_diff From @t
19 сен 14, 16:46    [16596629]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить