计算两个日期之间的差异

时间:2020-02-04 15:13:52

标签: mysql sql datediff

已要求我制作Power BI报告,其中显示有关组织服务台的一些详细信息。 我已经很容易做到了,但是,有一件我想不通的事情:他们要求我显示每个支持分析师解决票证所需的平均时间。 问题是:我只需要计算平均每天的8:00 AM至6:00 PM之间的平均时间。这意味着一天只有10个小时。我尝试在SQL(MySQL)中执行此操作,但没有任何结果。

很抱歉,如果这是一个愚蠢的问题,我仍在学习SQL和Power BI。

我尝试过:

CASE WHEN EXTRACT(HOUR FROM tick.CREATED) >= 8 AND
EXTRACT(HOUR FROM tick.TIME_CLOSED) <= 18 AND
weekday(tick.CREATED) not in (6,7) THEN
TIMESTAMPDIFF(HOUR,tick.CREATED,tick.TIME_CLOSED) END

但是我不知道一种跳过小时数并继续计算第二天小时数的方法。

1 个答案:

答案 0 :(得分:0)

尝试一下,请更改列名,如果需要,可以每天添加一个组

SELECT AVG(TIMESTAMPDIFF(SECOND,`from`,`to`))
FROM (
    SELECT `to`  
        ,CASE 
            -- if saturday then start date will be next monday first hour
            WHEN weekday(`from`) = 6 then CONCAT(DATE(DATE_ADD(`from`, INTERVAL 2 DAY)),' 08:00:00') 
            -- if sunday then start date will be next monday first hour
            WHEN weekday(`from`) = 7 then CONCAT(DATE(DATE_ADD(`from`, INTERVAL 1 DAY)),' 08:00:00') 
            -- if created outside business time then next day first hour
            WHEN `from` between CONCAT(DATE(`from`),' 18:00:00') and CONCAT(DATE(DATE_ADD(`from`, INTERVAL 1 DAY)),' 08:00:00') then CONCAT(DATE(DATE_ADD(`from`, INTERVAL 1 DAY)),' 08:00:00')
            ELSE `from`
        END `from`
    FROM ticket
    WHERE `from` is not null
        AND `to` is not null
) t
WHERE DATE(`from`) = DATE (`to`); -- if you want only ticket closed same day, its optional