我正在尝试创建计算两个日期之间的小时数的SQL查询(2015-01-01 12:12:12)。此查询的复杂性仅在周一至周五上午8点至下午6点之间。
我需要它来计算我们的Mantis BT系统中记录的问题需要多长时间才能得到解决。我们的客户可以在工作时间之外记录问题,但我只想根据工作时间计算小时数。
我们计算记录问题的日期/时间(submitted_date)与问题解决时的差异(最大updated_date和“已解决”状态)。困难在于可以解决问题,然后在将来重新开放。通过使用最大的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;