【问题标题】:How to get difference of date & time and sum for date wise?如何获得日期和时间的差异以及日期的总和?
【发布时间】:2020-04-14 17:15:41
【问题描述】:

我有下表:

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

【问题讨论】:

    标签: sql-server sql-server-2008 sql-server-2012


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-26
      • 2011-11-19
      • 1970-01-01
      • 2020-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多