0
我正在尝试创建计算两个日期之间的小时数(2015-01-01 12:12:12)的SQL查询。这个查询的复杂性仅在周一至周五上午8点至下午6点之间总结数小时。计算MySQL中日期之间的工作时间
我需要它来计算我们的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;
您是否必须考虑公共假期或任何特定于您的组织的内容?如果答案是肯定的,最好的第一步可能是创建并填充日历表。 –
是的,我不得不考虑公众假期和工作时间(上午8点到下午6点)。 – bruninhu