Oracle SQL中如何将分钟数字字段转换为hh:mm格式?
将整数分钟转换为hh:mm格式(支持超过24小时)
直接通过数值计算+字符串格式化就能实现需求,不用依赖to_date/to_char这类日期函数——这类函数会自动处理时间进位,无法得到60:00这种超过24小时的格式。
通用思路
- 计算小时数:总分钟数除以60取整数部分
- 计算分钟数:总分钟数对60取余
- 给小时和分钟补前导零,拼接成
hh:mm格式
各数据库实现示例
PostgreSQL
SELECT Duration, lpad(floor(Duration / 60)::text, 2, '0') || ':' || lpad((Duration % 60)::text, 2, '0') AS "hh:mm" FROM your_table;
MySQL
SELECT Duration, LPAD(FLOOR(Duration / 60), 2, '0') || ':' || LPAD(Duration % 60, 2, '0') AS `hh:mm` FROM your_table;
SQL Server
SELECT Duration, RIGHT('0' + CAST(Duration / 60 AS VARCHAR), 2) + ':' + RIGHT('0' + CAST(Duration % 60 AS VARCHAR), 2) AS "hh:mm" FROM your_table;
验证结果
代入你给出的示例数据:
- 120分钟 →
02:00 - 545分钟 →
09:05(注:你提供的示例中545对应09:08可能是笔误,545=9×60+5,正确结果应为09:05) - 3600分钟 →
60:00
内容的提问来源于stack exchange,提问作者John Williams
相关产品推荐
相关产品推荐

