如何将SQL Server中特定列的时间格式从hhmmss更改为hh:mm:ss

时间:2018-07-15 06:39:30

标签: sql sql-server

我的查询获取名为“ OBRGTM”的列的时间为“ 112532”。我需要将此格式转换为'11:25:32',我的意思是从hhmmss转换为hh:mm:ss

4 个答案:

答案 0 :(得分:3)

如果您的SQL Server版本支持FORMAT方法,则可以使用此方法。

测试DDL

CREATE TABLE T(
    dt numeric
);
INSERT INTO T VALUES (112532);
INSERT INTO T VALUES (012532);
INSERT INTO T VALUES (012530);

查询

SELECT FORMAT(dt,'0#:##:##')
FROM T

[结果]

|          |
|----------|
| 11:25:32 |
| 01:25:32 |
| 01:25:30 |

Scaling of target causes Scikit-learn SVM regression to break down

答案 1 :(得分:0)

尝试以下代码:

使用LEFT函数删除或消除最后一个小数点后的前导0000000

SELECT LEFT(CONVERT(TIME,STUFF(STUFF(RIGHT(OBRGTM,6),5,0,':'),3,0,':')),8) as OBRGTM

要测试:

DECLARE @TimeString NUMERIC

SET @TimeString = 232320

SELECT LEFT(CONVERT(TIME,STUFF(STUFF(RIGHT(@TimeString,6),5,0,':'),3,0,':')),8)

答案 2 :(得分:0)

如果它是整数,则可以使用整数除法计算自午夜以来的秒数,并将其设置为易于格式化的日期时间:

DECLARE @OBRGTM int = 123456;
SELECT DATEADD(second, @OBRGTM - 40*(@OBRGTM/100 + 60*(@OBRGTM/10000)), 0);

已添加

对于对此背后的数学运算感兴趣的人:

如果x是由数字hhmmss组成的整数,那么让我们使用整数除法并定义x' := x/100x" := x/10000。这样,x'将是整数hhmm,而x"将只是小时数(hh)。

现在,我们可以使用以下时间检索时间hh:mm:ss的秒(ss),分钟(mm)和小时(hh)。

  • ss = x - 100*x'
  • mm = x' - 100*x"
  • hh = x"

将它们放在一起,午夜之后的总秒数为

  ss + 60*mm + 3600*hh
= x - 100*x' + 60*(x' - 100*x") + 3600*x"
= x - 100*x' + 60*x' - 6000*x" + 3600*x"
= x - 40*x' - 2400*x"
= x - 40*(x' + 60*x")

答案 3 :(得分:0)

如果该值为字符串,则可以使用stuff()生成正确格式的字符串:

select stuff(stuff(OBRGTM, 5, 0, ':'), 3, 0, ':')

您可以使用cast()convert()将其转换为时间:

select convert(time, stuff(stuff(OBRGTM, 5, 0, ':'), 3, 0, ':'))