gpt4 book ai didi

MySQL - SEC_TO_TIME 给出相同的结果,无论组如何

转载 作者:行者123 更新时间:2023-11-29 21:54:30 25 4
gpt4 key购买 nike

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

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

查询1

<小时/>
select sum(TIME_TO_SEC(diff)) as "total runtime" 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
where str_date like "%JAN%") as a

“%JAN%” 的结果 ---> enter image description here

“%FEB%” 的结果 ---> enter image description here

查询2

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

每个月的结果都相同(12 月除外,该月份的数据量要少得多)

enter image description here

最佳答案

下面是我当前使用的查询。由于最大 TIME 对象值的限制,无法访问长时间运行的时间码。我选择的解决方法是简单地显示所用的小时数,而不是时间戳

 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

关于MySQL - SEC_TO_TIME 给出相同的结果,无论组如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33303209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com