【问题标题】:How to convert decimal to duration如何将小数转换为持续时间
【发布时间】:2022-11-12 11:08:02
【问题描述】:

我的数据是十进制类型,例如。 1.5,我需要转换成DD:HH:MM。

所以在我的情况下,它应该显示为 1 小时和 30 分钟。请告知我是#sql 和 Plsql 的新手。

-谢谢。

………………………………………………………………………………………………………………

【问题讨论】:

    标签: sql plsql


    【解决方案1】:

    所以你有一个数值并且你想将它转换为字符串格式天小时和分钟? -- 如果变量或列名为 myhours,以下是各个部分的公式

     days = floor(myhours / 24)
    
     hours = floor(myhours mod 24)
    
     mins = 60 * ((myhour mod 24) - floor(myhour mod 24))  
    

    然后,您需要将其中的每一个都转换为 varchar(带有 0 前缀)

     days =  RIGHT('00' + CAST(floor(myhours / 24) AS VARCHAR(2)),2) 
    
     hours = RIGHT('00' + CAST(floor(myhours mod 24) AS VARCHAR(2)),2)
    
     mins = RIGHT('00' + CAST(60 * ((myhour mod 24) - floor(myhour mod 24)) AS VARCHAR(2)),2)  
    

    并将它们连接在一起。

     RIGHT('00' + CAST(floor(myhours / 24) AS VARCHAR(2)),2) + ':' +
     RIGHT('00' + CAST(floor(myhours mod 24) AS VARCHAR(2)),2) + ':' +
     RIGHT('00' + CAST(60 * ((myhour mod 24) - floor(myhour mod 24)) AS VARCHAR(2)),2)  
    

    【讨论】:

      【解决方案2】:
      select trunc(t) ||':'|| 60*((T-TRUNC(T))) as time
      
      from   (select '1.5' t from dual);
      
      TIME
      1:30

      Fiddle

      【讨论】:

        猜你喜欢
        • 2020-09-05
        • 2017-02-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-20
        • 2020-05-03
        相关资源
        最近更新 更多