2016-10-25 6 views
-1

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

select 
[endtime] 
,[realtime] 
from [prin] 
where ([realtime] is not null) and ([endtime] is not null and) 
order by [realtime] 

between end date time and next start date time

+1

Ваш вопрос довольно неясен, и изображение не помогает. Поместите данные образца * и * желаемые результаты в вопросе вместе с желаемыми результатами. –

+0

На каком основании вы хотите это сделать? Не понятно. –

ответ

1

Используйте функцию DateDiff, чтобы получить разницу между двумя датами. Добавьте параметр day, чтобы получить разницу в днях.

SELECT 
[endtime] 
,[realtime] 
,datediff (day,[endtime],lead ([realtime]) over (order by [realtime])) as days_endtime_2_next_realtime 
FROM [prin] 
WHERE ([realtime] is not null) 
AND ([endtime] is not null) 
ORDER BY [realtime] 
+0

То же самое. Нет объяснений, что делает код? –

+0

@ AT-2016, не стесняйтесь редактировать и добавлять его к ответу –

+0

@ F.Kahalaj, P.s. если вам понравился ответ, вы можете захотеть –

0
create table #a 
(
date_1 date, 
date_2 date 
) 

insert into #a values 
('1-10-16','2-10-16'), 
('2-10-16','3-10-16'), 
('3-10-16','4-10-16') 

;with cte as 
(
select 
date_1,date_2 
,lead(date_2,1) over (order by date_2) as lead_value 
from #a 
where (date_1 is not null) and (date_2 is not null) 
) 
select date_1,date_2, 
datediff(Day,date_1,lead_value) as diffrence from cte 
+0

Нет объяснений, что делает код? –

+0

Неправильный синтаксис рядом с 'значением' –

+0

Я отредактировал свой ответ, можно проверить один раз @ F.Kahalaj – Chanukya