Как получить разницу между датой и временем и суммой для даты? - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть следующая таблица:

Time1                      Time2                       isvalid
---------------------------------------------------------------
2019-11-13 21:19:13.000    2019-11-13 21:25:35.000       1
2019-11-13 21:44:11.000    2019-11-13 21:45:23.000       1
2019-11-14 09:53:51.000    2019-11-14 10:03:22.000       1
2019-11-14 12:48:01.000    2019-11-14 13:10:29.000       1

Теперь я хочу получить разницу между time1 и time2 и суммой, которая будет отображаться по дате.

Я пробовал этот запрос:

SELECT COALESCE(cast(sum(DATEDIFF(MI, Time1, Time2)) AS DECIMAL(10, 2)), 0) AS total
FROM mytable
WHERE Time1 >= '2019-11-13'
    AND Time1 <= '2019-11-14'
    AND isvalid = 1

С помощью вышеупомянутого запроса я получаю только разницу, и это также только по строкам.

Я хочу вывод как:

Date          total
-------------------
2019-11-13      7 
2019-11-14      32

1 Ответ

1 голос
/ 14 апреля 2020

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

create table sampledata(dtStart DateTime, 
   dtEnd DateTime,
   isValid bit)

insert into sampledata values
('2019-11-13 21:19:13.000', '2019-11-13 21:25:35.000', 1),
('2019-11-13 21:44:11.000', '2019-11-13 21:45:23.000', 1),
('2019-11-14 09:53:51.000', '2019-11-14 10:03:22.000', 1),
('2019-11-14 12:48:01.000', '2019-11-14 13:10:29.000', 1)

select * from sampledata

select dtStart, sum(TotMin) as TotMin from(
select cast(dtStart as Date) as dtStart, DATEDIFF(minute, dtStart, dtend) as TotMin
from sampledata
)a group by dtStart

Вот демоверсия db <> fiddle .

...