Mysql 本月和上月两个日期时间之间的平均时间
我们有一个表,有两个字段tkTimeOpen和tktimecolled。我们需要找到这个月和上个月的平均等待时间。我一直无法获得正确的SQL查询来提取我需要的内容 这是记录日期和时间的方式;2017-01-25 10:35 这个月的平均值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
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);