我有一个MySQL表,其中包含一个视频的持续时间。
我有来自许多不同来源的视频,持续时间被导入数据库,但没有标准化。我希望将这里的持续时间标准化。
考虑以下表格结构:
+-----------+
| Duration |
+-----------+
| 5h58m38s |
| 22m59s |
| 05m29s |
| 06m09s |
| 00m06s |
| 00m00s |
+-----------+
我想将此格式:00毫秒转换为hh:mm:ss。
例如:
22m59s should be 00:22:59
5h58m38s should be 05:58:38
如何在MySQL中做到这一点?
我尝试使用查询:
UPDATE table SET duration = sec_to_time(duration);
这不起作用,我迷失了方向。非常感谢所有的评论和回答,非常感谢!
使用SEC_TO_TIME
而不是STR_TO_DATE
。由于您有三种格式,因此需要调用三次。由于它在失败时返回NULL
(最多失败两次,因为三种格式中只有一种匹配),因此使用COALESCE
获取第一个非NULL
值,这就是您要查找的时间。
UPDATE table
SET duration = COALESCE(
STR_TO_DATE(duration, '...'),
STR_TO_DATE(duration, '...'),
STR_TO_DATE(duration, '...')
)
;
在手册的帮助下,您应该能够计算出我用'...'
打开的格式字符串。