如何获得日期和时间的差异以及日期的总和?

How to get difference of date & time and sum for date wise?

我有以下 table:

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

您可以使用 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 演示。