在MySQL中将天数转换为秒

时间:2017-06-06 13:04:00

标签: mysql sql date

我需要将以下列转换为秒:

+----------------------+
| duration             |
+----------------------+
| 00:15:52.22          |
| 01:15:51.65          |
| 02:15:50.93          |
| 27 days, 06:22:41.11 |
| 27 days, 07:22:40.76 |
| 27 days, 08:22:40.43 |
+----------------------+

问题是TIME_TO_SEC()函数仅对返回以下结果的前三行正常工作:

+-----------------------+
| TIME_TO_SEC(duration) |
+-----------------------+
|            952.220000 |
|           4551.650000 |
|           8150.930000 |
|             27.000000 |
|             27.000000 |
|             27.000000 |
+-----------------------+

我是否可以使用将所有行转换为秒的函数?

1 个答案:

答案 0 :(得分:3)

以下答案假定duration列中的每个条目仅采用时间组件的形式,或者采用时间组件后的一些天数。假设这样,我们可以使用CASE表达式来选择性地解析任一类型的数据。如果有一个days组件,我们可以转换为秒并将其添加到时间组件的秒数。

SELECT
    CASE WHEN duration LIKE '%days%'
         THEN CAST(SUBSTRING_INDEX(duration, ' ', 1) AS UNSIGNED) * 24*60*60 +
              TIME_TO_SEC(SUBSTRING_INDEX(duration, ' ', -1))
         ELSE TIME_TO_SEC(duration)
    END AS duration_in_seconds
FROM yourTable

<强>输出:

enter image description here

在这里演示:

Rextester