如何在SQL中将分钟转换为小时?示例:300分钟转05:00
SQL实现分钟转HH:MM格式(如300分钟→05:00)
下面针对主流SQL数据库给出具体实现方案,核心逻辑是将总分钟数拆解为小时和分钟,再格式化为两位数字拼接成HH:MM格式:
MySQL
方法1:利用时间函数
通过SEC_TO_TIME将分钟转换为秒后转成时间类型,再用TIME_FORMAT格式化输出:
SELECT TIME_FORMAT(SEC_TO_TIME(300 * 60), '%H:%i') AS formatted_time;
输出结果:05:00
方法2:字符串拼接
直接计算小时和分钟,用LPAD补零后拼接:
SELECT CONCAT( LPAD(FLOOR(300 / 60), 2, '0'), ':', LPAD(MOD(300, 60), 2, '0') ) AS formatted_time;
SQL Server
方法1:利用日期函数
通过DATEADD将分钟加到基准时间(0点),再用FORMAT格式化:
SELECT FORMAT(DATEADD(MINUTE, 300, 0), 'HH:mm') AS formatted_time;
方法2:字符串拼接
计算小时和分钟后补零拼接:
SELECT CONCAT( RIGHT('0' + CAST(300 / 60 AS VARCHAR), 2), ':', RIGHT('0' + CAST(300 % 60 AS VARCHAR), 2) ) AS formatted_time;
PostgreSQL
方法1:利用INTERVAL类型
将分钟转为INTERVAL后用TO_CHAR格式化:
SELECT TO_CHAR(INTERVAL '300 minutes', 'HH24:MI') AS formatted_time;
方法2:字符串拼接
转换为文本后补零拼接:
SELECT CONCAT( LPAD(FLOOR(300 / 60)::TEXT, 2, '0'), ':', LPAD(MOD(300, 60)::TEXT, 2, '0') ) AS formatted_time;
通用思路(跨数据库)
如果你的数据库不支持上述特定函数,只要支持整数除法、取模运算和字符串补零,就可以用类似逻辑实现:
- 计算小时:
总分钟数 // 60(取整) - 计算分钟:
总分钟数 % 60 - 将小时和分钟分别格式化为两位数字(不足两位补前导零)
- 用冒号拼接两个字符串
内容的提问来源于stack exchange,提问作者OD46
相关产品推荐
相关产品推荐

