将HHmmss格式的varchar(6)转换为sql时间格式

问题描述 投票:0回答:4

如何将存储在

DB
中的内容转换为
varchar(6)
(例如,180000,实际上是
HHmmss
的格式)到时间,我尝试了以下方法,但不起作用

select convert(time,'180000')
select cast('180000' as time)
sql sql-server-2012 time-format
4个回答
8
投票

另一种方法

DECLARE @t VARCHAR(6)='180000';

SELECT CAST(STUFF(STUFF(@t,5,0,':'),3,0,':') AS time)

感谢@SebtHU,他指出,这在

09:15:00
00:45:00
等时间中不适用于前导零。你可以用这个代替:

SELECT CAST(STUFF(STUFF(RIGHT(CONCAT('000000',@t),6),5,0,':'),3,0,':') AS time);

2
投票

试试这个:

select cast((substring('180000',0,3)+':'+substring('180000',3,2)+':'+substring('180000',5,2)) as time)

0
投票
select cast(format(180000, '00:00:00') as time), cast(format(131, '00:00:00') as time)

0
投票

一种选择是使用 DATEFROMPARTS 函数,它允许您接收一个结构来形成时间表。

语法:

TIMEFROMPARTS ( hour, minute, seconds, fractions, precision )

问题解决:

声明 @t VARCHAR(6)='180000'; 从部分中选择时间 ( LEFT(@t,2), Substring(@t,3,2), RIGHT(@t,2), 0, 0 )

结果:

18:00:00

更多信息:https://learn.microsoft.com/en-us/sql/t-sql/functions/timefromparts-transact-sql?view=sql-server-ver16

© www.soinside.com 2019 - 2024. All rights reserved.