在MySQL中计算日期之间的工作时间



我正在尝试创建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中轻松复制。

你只需要定义你的工作时间,然后参考这些时间来计算时间。

相关内容

  • 没有找到相关文章

最新更新