Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL中将天转换为秒_Mysql_Sql_Date - Fatal编程技术网

在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