【问题标题】:Convert float 8.07 to string as 08:07 in SQL Server 2005在 SQL Server 2005 中将 float 8.07 转换为字符串为 08:07
【发布时间】:2018-02-15 22:05:48
【问题描述】:

我想将浮点时间字段8.07 转换为字符串08:07。有什么简单的方法可以做到这一点吗? 还是应该按点拆分,计算长度并相应地附加零?

【问题讨论】:

标签: sql-server tsql time sql-server-2005 date-conversion


【解决方案1】:

这个呢:

DECLARE @value DECIMAL(9,2) = 8.07

SELECT REPLACE(RIGHT(@value  + 1000000, 5), '.', ':');

当然,您可以将要添加的值更改为小的值。

【讨论】:

  • 惊人的惊人。我快疯了 :) 拧了一个很长的(是的,很长的)函数来做到这一点。你在一行中做到了这一点。此外,对于时间 08:00 AM,输入浮点值仅为 8,对于 12:00 AM,它只是空白,因为它是 0。
  • 很好,然后您添加 100 而不是 1000000。我想它不会改变性能,但看起来会更简单。
【解决方案2】:

您可以使用以下查询:

DECLARE @t FLOAT = 8.073

SELECT @t AS t,
       ROUND(@t, 2) AS trunc_t, 
       REPLACE(RIGHT('00' + CAST(ROUND(@t, 2) AS VARCHAR(5)), 5), '.', ':') AS time_t

得到:

t      trunc_t  time_t
---------------------
8.073  8.07     08:07

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多