如何将超24小时的时分格式字符串转换为秒数?
解决超24小时时分字符串转秒数的问题
DATEDIFF(second, '00:00','47:45')失效的核心原因是:SQL时间函数要求输入为合法标准时间格式,而47:45的小时数超过23,不属于标准时间范围,无法被正确解析。
最快的实现方式是直接拆分字符串计算,跳过时间类型解析步骤,性能更优且不受时间范围限制:
SQL Server 写法
SELECT (CAST(LEFT('47:45', CHARINDEX(':', '47:45') - 1) AS INT) * 3600) + (CAST(RIGHT('47:45', LEN('47:45') - CHARINDEX(':', '47:45')) AS INT) * 60) AS total_seconds
MySQL 写法
SELECT (CAST(SUBSTRING_INDEX('47:45', ':', 1) AS UNSIGNED) * 3600) + (CAST(SUBSTRING_INDEX('47:45', ':', -1) AS UNSIGNED) * 60) AS total_seconds
逻辑说明
- 用字符串函数拆分冒号前后的小时数和分钟数
- 小时数乘3600(1小时=3600秒),分钟数乘60(1分钟=60秒)
- 两者相加得到总秒数
这种方法无需依赖时间类型转换,计算直接高效,支持任意大小的小时数。
内容的提问来源于stack exchange,提问作者Henrov
相关产品推荐
相关产品推荐

