Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL中计算日期之间的工作时间_Mysql_Sql_Mantis - Fatal编程技术网

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

在MySQL中计算日期之间的工作时间,mysql,sql,mantis,Mysql,Sql,Mantis,我正在尝试创建SQL查询,以计算两个日期2015-01-01 12:12:12之间的小时数。此查询的复杂性仅限于周一至周五上午8点至下午6点之间的汇总时间 我需要它来计算我们的螳螂BT系统中记录的问题需要多长时间才能得到解决。我们的客户可以在工作时间之外记录问题,但我只想根据我们的工作时间计算时间 我们计算记录问题的日期/时间、提交日期与解决问题的最大更新日期和解决状态之间的差异。困难在于一个问题可以解决,然后在将来重新打开。通过使用最长更新日期,我的脚本包括问题处于已解决状态的天数,这是不正确

我正在尝试创建SQL查询,以计算两个日期2015-01-01 12:12:12之间的小时数。此查询的复杂性仅限于周一至周五上午8点至下午6点之间的汇总时间

我需要它来计算我们的螳螂BT系统中记录的问题需要多长时间才能得到解决。我们的客户可以在工作时间之外记录问题,但我只想根据我们的工作时间计算时间

我们计算记录问题的日期/时间、提交日期与解决问题的最大更新日期和解决状态之间的差异。困难在于一个问题可以解决,然后在将来重新打开。通过使用最长更新日期,我的脚本包括问题处于已解决状态的天数,这是不正确的。它应该只包括问题开放时的天数

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中轻松复制


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

您是否需要考虑公共假日或您所在组织的特定事项?如果答案是肯定的,那么最好的第一步可能是创建并填充一个日历表。是的,我必须考虑公共假日和上午8点到下午6点的工作时间。