mysql - 从文本中解析时间间隔

标签 mysql sql

我有这个数据:

+-------------+----------------------------+
| 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/

相关文章:

sql - 流水线函数上的 Oracle 查询工作正常,但如果我添加条件就会窒息

mysql - 选择仍然可用的职位

mysql - Sphinxsearchignore_chars 和异常解决方法

php - INSERT 和 UPDATE 语句将错误数据传递到数据库

php - 加速此代码 - PHP/SQL - 短代码但目前需要非常长的时间

mysql - MySQL 中何时使用单引号、双引号和反引号

java - 获取 java.sql.date 的最大和最小日期

c# - Entity Framework 代码首先 : 1:0. .1 更改外键位置

mysql - 带有 Postgres 数据的 Rails 被乱序返回

mysql - 使用选定的数据执行多次插入