我正在尝试创建SQL查询,以计算两个日期之间的小时数(2015-01-01 12:12:12)。此查询的复杂性仅在周一至周五上午8点至下午6点的汇总时间内。
我需要它来计算我们的Mantis BT系统中记录的问题需要多长时间才能解决。我们的客户可以记录我们工作时间之外的问题,但我只想根据我们的工作时间计算时间。
我们计算记录问题的日期/时间(提交日期)与解决问题的时间(最大更新日期和"已解决"状态)之间的差异。困难在于,一个问题可以得到解决,然后在未来重新开放。通过使用最大updated_date,我的脚本包含了问题处于"已解决"状态的天数,这是不正确的。它应该只包括问题开放的天数。
SELECT
proj.name,
bugs.id,
summary,
users2.username AS Assigned_to,
CASE bugs.status
WHEN '80' THEN 'Resolved'
WHEN '90' THEN 'Closed'
END AS Status,
bugs.date_submitted AS date_submitted,
MAX(date_modified) AS last_date_modified
FROM
mantis_bug_table bugs
LEFT JOIN mantis_bugnote_table notes ON notes.bug_id = bugs.id
INNER JOIN mantis_bug_history_table hist ON bugs.id = hist.bug_id
LEFT JOIN mantis_user_table users2 ON users2.id = bugs.handler_id
INNER JOIN mantis_project_table proj ON proj.id = bugs.project_id
WHERE
bugs.project_id = 102
AND hist.field_name = 'status'
AND bugs.status IN (80,90)
AND date_modified >= '2015-01-01'
GROUP BY
summary;
本教程是为SQL编写的,但可以在MySQL中轻松复制。
你只需要定义你的工作时间,然后参考这些时间来计算时间。