【问题标题】:Convert Number (decimal format) to Time将数字(十进制格式)转换为时间
【发布时间】:2017-11-07 17:06:07
【问题描述】:

我有一个数据类型为十进制(6,0)的 CPTIME 列。当前值看起来像 165750。我需要它采用 TIME 格式 16:57:50。有没有办法做到这一点?我看到有人问过类似的问题,但那是十进制小时/分钟(即 16.57 为 16:57),这不适用于此处。

【问题讨论】:

  • 对不起 MS SQL Server 2016

标签: sql sql-server sql-server-2016


【解决方案1】:

您可以将其转换为 CHAR,然后添加冒号,最后将其转换回 TIME,如下所示:

SELECT (STUFF(STUFF(RIGHT('000000' + CAST(135 AS VARCHAR(6)), 6), 5, 0, ':'), 3, 0, ':'))

如果您的数字少于 6 个,“000000”连接将填充零,然后我们选择最右边的 6 个数字。

【讨论】:

  • 我收到以下错误:Msg 241, Level 16, State 1, Line 5 从字符串转换日期和/或时间时转换失败。
  • 这里是代码:,CAST(STUFF(STUFF(CAST([CPTIME] AS CHAR(6)), 5, 0, ':'), 3, 0, ':') AS TIME(0)) AS prdTime
  • 另外,需要注意的是,12:01:35会显示为000135,sql变为135
  • 将第一个 CAST 更改为 TRY_CAST 并检查是否有些行已转换而有些则没有。
  • RIGHT(REPLACE('000000$d', '$d', [CPTIME]), 6) 应该比投到CHAR(6) 有更好的运气。
猜你喜欢
  • 2017-09-03
  • 2014-03-16
  • 1970-01-01
  • 2020-01-04
  • 1970-01-01
  • 2018-08-10
  • 1970-01-01
  • 2015-04-18
  • 2010-10-15
相关资源
最近更新 更多