在MySQL中将天转换为秒
我需要将以下列转换为秒:在MySQL中将天转换为秒,mysql,sql,date,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 | +-----------
+----------------------+
| 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\u TO_SEC()
函数仅对返回以下结果的前三行正常工作:
+-----------------------+
| TIME_TO_SEC(duration) |
+-----------------------+
| 952.220000 |
| 4551.650000 |
| 8150.930000 |
| 27.000000 |
| 27.000000 |
| 27.000000 |
+-----------------------+
是否有一个函数可以将所有行转换为秒?下面的答案假设
duration
列中的每个条目都只采用时间成分的形式,或者采用天数加时间成分的形式。假设这样,我们可以使用CASE
表达式选择性地解析任一类型的数据。在有天组件的情况下,我们可以转换为秒,并将其添加到时间组件中的秒数中
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
输出:
此处演示:
此列的数据类型是什么?@ChetanRanpariya它是
varchar