【问题标题】:SQL Server 2008 convert float to timeSQL Server 2008 将浮点数转换为时间
【发布时间】:2018-05-03 12:00:43
【问题描述】:

您能帮我将浮点数转换为时间吗?
我的值(小时数)如下所示:

[- 104.59 / -104:35:00],  [0.25 / 00:15:00],  [5,84  /05:50:00]

我找不到解决方案,因为在类似的问题中没有“+”和“-”值的大小写。

【问题讨论】:

  • Convert float to datetime的可能重复
  • 嗯...[- 104.59 / -104:35:00] 应该代表什么时间?
  • "-104.59" 其平均值:104 小时和 1 小时的 0.59 小时(0.59 * 60 分钟 = 35 分钟)。小时数没问题对我来说困难的是以最短的方式将 0.59 转换为分钟,而我可以有“-”值。
  • 我想看到的是:104:35:00(104 小时 35 分钟,秒无关紧要)。

标签: sql sql-server sql-server-2008 data-conversion


【解决方案1】:
with cte as (select * from (values ('-104.59'), ('0.25'), ('5,84')) t(val))
select val, concat(iif(charindex(':',result)>3,'','0'), result) result
from 
  cte
  cross apply (select replace(val, ',', '.') rp) t
  cross apply (select charindex('.', rp) ind) t1
  cross apply (select concat(substring(rp, 1, ind-1), ':', cast(substring(rp, ind+1, len(rp)) as int)*60/100, ':00') result) t2

【讨论】:

    猜你喜欢
    • 2023-03-20
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    相关资源
    最近更新 更多