Получить абсолютную разницу во времени между двумя строками таблицы в другой таблице - PullRequest
0 голосов
/ 10 марта 2020

У меня есть таблица с отметкой времени и логическим значением, указывающим на наличие вещи, которая выглядит следующим образом

id     timeStamp     thingIsIn
1      t1            1 
4      t2            0
5      t3            1
7      t4            0

, где t1-t4 - это просто значения даты и времени, поступающие из функции getdate (), когда стол заполнен. Поскольку дубликаты удаляются, у меня могут быть непоследовательные идентификаторы. Мне нужно отправить inTimes в таблицу и outTimes в таблицу. Пример таблицы inTimes:

timeStamp     duration
t1             t2-t1    (this is the timeStamp of when it went in and how long it was there)
t3             t4-t3

, где t2-t1 может быть любой длины, поэтому я хочу, чтобы время в datetime, а не часть datetime.

Как рассчитать время разница и как вы отправляете это на новую таблицу?

1 Ответ

0 голосов
/ 10 марта 2020

В основном вам нужно использовать оконную функцию, чтобы получить значение следующей записи. Следующий запрос должен работать.

create table time_stamp
(
  id int,
  timeStamp DateTime,
  thingIsIn int
);

insert into time_stamp VALUES(1, getdate(), 1);
insert into time_stamp VALUES(7, getdate() + 4, 1);
insert into time_stamp VALUES(4, getdate() + 1, 0);
insert into time_stamp VALUES(5, getdate() + 2, 1);
insert into time_stamp VALUES(6, getdate() + 5, 0);
insert into time_stamp VALUES(8, getdate() + 3, 0);

SELECT t.timeStamp, DATEDIFF(hour, t.timestamp, lead_time) hour_difference
FROM (SELECT ts.id, ts.timeStamp, ts.thingIsIn, LEAD(timeStamp) OVER (ORDER BY timeStamp) lead_time
      FROM time_stamp ts) t
WHERE t.thingisin = 1

http://sqlfiddle.com/#! 18 / 84db6e / 9

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