Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 本月和上月两个日期时间之间的平均时间_Mysql - Fatal编程技术网

Mysql 本月和上月两个日期时间之间的平均时间

Mysql 本月和上月两个日期时间之间的平均时间,mysql,Mysql,我们有一个表,有两个字段tkTimeOpen和tktimecolled。我们需要找到这个月和上个月的平均等待时间。我一直无法获得正确的SQL查询来提取我需要的内容 这是记录日期和时间的方式;2017-01-25 10:35 这个月的平均值 SELECT SUM(DATEDIFF(MINUTE,tkTimeOpen,tkTimeClose)) * 1.0 / (SELECT COUNT(*) * 1.0 FROM e_ticket) FROM e_ticket WHERE

我们有一个表,有两个字段tkTimeOpen和tktimecolled。我们需要找到这个月和上个月的平均等待时间。我一直无法获得正确的SQL查询来提取我需要的内容

这是记录日期和时间的方式;2017-01-25 10:35

这个月的平均值

SELECT SUM(DATEDIFF(MINUTE,tkTimeOpen,tkTimeClose)) * 1.0 
           / (SELECT COUNT(*) * 1.0 FROM e_ticket)
FROM e_ticket
WHERE YEAR(tkTimeOpen) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH) AND MONTH(tkTimeOpen) = MONTH(CURRENT_DATE - INTERVAL 0 MONTH)
上个月的平均值

SELECT SUM(DATEDIFF(MINUTE,tkTimeOpen,tkTimeClose)) * 1.0 
           / (SELECT COUNT(*) * 1.0 FROM e_ticket)
FROM e_ticket
WHERE YEAR(tkTimeOpen) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH) AND MONTH(tkTimeOpen) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH)
我尝试了很多变化,但都没有达到预期的效果。 如果有人能帮忙,那就太好了

多谢各位

  • 您可以使用的一个函数是
    TIMESTAMPDIFF
    ——而不是
    DATEDIFF
  • 您可以使用
    AVG()
    而不是
    SUM()/COUNT()

  • 这将为您提供上个月和本月的平均分钟数:

    SELECT AVG(TIMESTAMPDIFF(MINUTE, tkTimeOpen, tkTimeClose)) 
    FROM e_ticket 
    WHERE tkTimeOpen >= DATE_ADD(LAST_DAY(DATE_SUB(NOW(), INTERVAL 2 MONTH)), INTERVAL 1 DAY);
    
    如果您仍然需要单独获得平均值,您可以保持WHERE子句与您拥有的相似

    本月:

    SELECT AVG(TIMESTAMPDIFF(MINUTE, tkTimeOpen, tkTimeClose)) 
    FROM e_ticket 
    WHERE YEAR(tkTimeOpen) = YEAR(NOW()) AND MONTH(tkTimeOpen) = MONTH(NOW());
    
    上个月:

    SELECT AVG(TIMESTAMPDIFF(MINUTE, tkTimeOpen, tkTimeClose)) 
    FROM e_ticket 
    WHERE YEAR(tkTimeOpen) = YEAR(NOW() - INTERVAL 1 MONTH) AND MONTH(tkTimeOpen) = MONTH(NOW() - INTERVAL 1 MONTH);
    
    SELECT AVG(TIMESTAMPDIFF(MINUTE, tkTimeOpen, tkTimeClose)) 
    FROM e_ticket 
    WHERE YEAR(tkTimeOpen) = YEAR(NOW() - INTERVAL 1 MONTH) AND MONTH(tkTimeOpen) = MONTH(NOW() - INTERVAL 1 MONTH);