我有一个带有视频持续时间的MySQL表。
我有来自许多不同来源的视频,并且持续时间已导入数据库而未进行标准化。我希望在此标准化持续时间。
考虑以下表格结构:
+-----------+
| Duration |
+-----------+
| 5h58m38s |
| 22m59s |
| 05m29s |
| 06m09s |
| 00m06s |
| 00m00s |
+-----------+
我想将此格式转换为:00m00s为hh:mm:ss。
例如:
22m59s should be 00:22:59
5h58m38s should be 05:58:38
我如何在MySQL中执行此操作?
我尝试使用查询:
UPDATE table SET duration = sec_to_time(duration);
这不起作用,我迷路了。所有的评论和答案都非常感谢,非常感谢你!
答案 0 :(得分:0)
而不是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, '...')
)
;
在手册的帮助下,你应该能够找出我用'...'
打开的格式字符串。