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

标签 mysql

我们有一个包含两个字段 tkTimeOpen 和 tkTimeClosed 的表。我们需要找出本月和上个月的平均等待时间。我一直无法获得正确的 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)

我尝试了很多变体,但没有提供所需的输出。 如果有人可以提供帮助,那就太好了!

谢谢

最佳答案

这应该为您提供上个月和本月合并的平均分钟数:

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);

关于mysql - 本月和上个月两个日期时间之间的平均时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42358342/

相关文章:

php - 获取开始日期到结束日期之间的日期,以 php 月份明智计数

php - WordPress 数据库查询不返回结果

python - Django user.save() 在列 'is_superuser' 上失败不能为空

php - Mysql Join inner join left join Multiple Tables null on right table

mysql - 如何比较sql中的两个时间戳?

php - 违反完整性约束 : 1062 Duplicate entry '4974-134' for key 'UNQ_CATALOG_PRODUCT_SUPER_ATTRIBUTE_PRODUCT_ID_ATTRIBUTE_ID'

java - 通过复选框选择来显示项目

java - 连接到 Heroku clearDB mySql

php - 在 PHP 中将对象转换为字符串

java - Hibernate 3 与 mysql