我的查询获取名为“ OBRGTM”的列的时间为“ 112532”。我需要将此格式转换为'11:25:32',我的意思是从hhmmss转换为hh:mm:ss
答案 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/100
和x" := 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, ':'))