如何获得日期和时间的差异以及日期的总和?
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 演示。
我有以下 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 演示。