Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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_Database_Datetime_Time - Fatal编程技术网

MySQL-秒到秒的时间给出相同的结果,不考虑组

MySQL-秒到秒的时间给出相同的结果,不考虑组,mysql,sql,database,datetime,time,Mysql,Sql,Database,Datetime,Time,使用下面的查询以获得每个月的时间差之和。基本上我有开始时间,停止时间。我取的差等于运行时间,然后我想把一个月的所有运行时间加起来,也就是说在一月份我们有x小时y分钟z秒的运行时间 然而,当对这些值求和时,我会遇到奇怪的结果。将一月和二月的秒数相加时。我得到了不同的结果。然后,当将秒转换为时间戳时,它们解析为相同的时间值 问题1 %JAN%的结果--> %FEB%的结果--> 问题2 除数据量显著减少的12月外,每个月的结果相同 下面是我正在使用的当前查询。由于最大时间对象值的限制,无法访问长运行

使用下面的查询以获得每个月的时间差之和。基本上我有开始时间,停止时间。我取的差等于运行时间,然后我想把一个月的所有运行时间加起来,也就是说在一月份我们有x小时y分钟z秒的运行时间

然而,当对这些值求和时,我会遇到奇怪的结果。将一月和二月的秒数相加时。我得到了不同的结果。然后,当将秒转换为时间戳时,它们解析为相同的时间值

问题1

%JAN%的结果-->

%FEB%的结果-->

问题2 除数据量显著减少的12月外,每个月的结果相同


下面是我正在使用的当前查询。由于最大时间对象值的限制,无法访问长运行时间代码。 我选择的解决方法是简单地显示所花费的时间,作为时间戳的一部分

 select monthname(STR_TO_DATE(STR_DATE, "%d/%b/%Y")) as month,
    sum(TIME_TO_SEC(diff))/3600 as hours
                     from 
    (SELECT
        CASE WHEN RIGHT(stp_time,3)="DUR"
            THEN
                TIMEDIFF(LEFT(stp_time,8), '00:00:00')
            ELSE
                TIMEDIFF(
                    STR_TO_DATE(CONCAT(stp_date," ",LEFT(stp_time,8)), '%d/%b/%Y %H:%i:%s'),
                    STR_TO_DATE(CONCAT(str_date," ",LEFT(str_time,8)), '%d/%b/%Y %H:%i:%s')
                    )
        END AS diff, ext_umid, str_date
    FROM vms1_asrun) as a
    group by month

我猜你达到了秒到秒的时间限制,它只能显示小时、分钟和秒-因此,如果你的总和大于24小时,你总是会得到这个结果!运行时的总和很可能在1000小时内。有别的解决办法吗?我想我可以自己转换一下:你现在能自己回答你的问题吗?如果是,请这样做,并请给出详细解释!被另一个任务缠住了,来袭!
select monthname(STR_TO_DATE(STR_DATE, "%d/%b/%Y")) as month,
SEC_TO_TIME(sum(TIME_TO_SEC(diff)))
                 from 
(SELECT
    CASE WHEN RIGHT(stp_time,3)="DUR"
        THEN
            TIMEDIFF(LEFT(stp_time,8), '00:00:00')
        ELSE
            TIMEDIFF(
                STR_TO_DATE(CONCAT(stp_date," ",LEFT(stp_time,8)), '%d/%b/%Y %H:%i:%s'),
                STR_TO_DATE(CONCAT(str_date," ",LEFT(str_time,8)), '%d/%b/%Y %H:%i:%s')
                )
    END AS diff, ext_umid, str_date
FROM vms1_asrun) as a
group by month
 select monthname(STR_TO_DATE(STR_DATE, "%d/%b/%Y")) as month,
    sum(TIME_TO_SEC(diff))/3600 as hours
                     from 
    (SELECT
        CASE WHEN RIGHT(stp_time,3)="DUR"
            THEN
                TIMEDIFF(LEFT(stp_time,8), '00:00:00')
            ELSE
                TIMEDIFF(
                    STR_TO_DATE(CONCAT(stp_date," ",LEFT(stp_time,8)), '%d/%b/%Y %H:%i:%s'),
                    STR_TO_DATE(CONCAT(str_date," ",LEFT(str_time,8)), '%d/%b/%Y %H:%i:%s')
                    )
        END AS diff, ext_umid, str_date
    FROM vms1_asrun) as a
    group by month