You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需函数与Declare:将DECIMAL小时转换为时分格式的SQL SELECT实现

解决方案

嘿,这个需求我完全get到了!咱们不用任何函数、不用DECLARE,纯SELECT语句就能搞定。核心思路是先按你的计算逻辑算出总分钟数,再拆分小时和分钟,最后处理分钟的前置0问题。

假设你的DECIMAL字段名叫decimal_val,对应的表是your_table,直接用这条语句就行:

SELECT 
  CONCAT(
    decimal_val DIV 1,
    ':',
    CASE 
      WHEN (decimal_val * 60) DIV 1 % 60 < 10 THEN CONCAT('0', (decimal_val * 60) DIV 1 % 60)
      ELSE (decimal_val * 60) DIV 1 % 60
    END
  ) AS formatted_time
FROM your_table;

咱们拆解下逻辑:

  • decimal_val DIV 1:用整数除法直接提取字段的整数部分,也就是小时数(比如0.17 DIV 1得到0,1.33 DIV1得到1)。
  • (decimal_val * 60) DIV 1:按照你的计算规则,把字段值转换成总分钟数的整数部分(0.17*60=10.2,DIV1后得到10)。
  • % 60:取总分钟数除以60的余数,就是最终的分钟部分。
  • CASE语句:判断分钟数是否小于10,如果是就拼接'0'补位,否则直接用原数,确保分钟是两位数。

测试几个场景:如果字段值是0.17,会得到0:10;如果是0.08,会得到0:04;如果是1.25,结果就是1:15,完全符合你的要求!

内容的提问来源于stack exchange,提问作者Veljko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:59:34