我有这个数据:
+-------------+----------------------------+
| name | time_lost |
+-------------+----------------------------+
| Break000002 | 7 day 18.0 hours |
| Break000003 | 0 day 10.0 hours |
| Break000004 | 1 day 1.52 hours |
| Break000005 | 2 day 21.0 hours |
| Break000006 | 1 day 0.416666666667 hours |
| Break000007 | 0 day 1.25 hours |
| Break000008 | 0 day 2.5 hours |
| Break000009 | 1 day 0.02 hours |
+-------------+----------------------------+
我想在此表中计算总的 time_lost,所以我尝试了这个:
select sum(time_lost) from mytable;
输出:
+----------------+
| sum(time_lost) |
+----------------+
| 12 |
+----------------+
如何解析这个字符串以将其转换为时间?
最佳答案
您可以将 time_lost
列转换为带分数的天数,如下所示:
LEFT(time_lost, LOCATE(' day', time_lost)-1) + SUBSTR(time_lost, LOCATE(' day', time_lost)+5)/24
然后将其放入 SUM()
函数中。
select sum(LEFT(time_lost, LOCATE(' day', time_lost)-1) + SUBSTR(time_lost, LOCATE(' day', time_lost)+5)/24) AS total_time_lost
from mytable;
您的示例数据的结果将为 14.2638 天
关于mysql - 从文本中解析时间间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42340544/