如何将存储在
DB
中的内容转换为varchar(6)
(例如,180000,实际上是HHmmss
的格式)到时间,我尝试了以下方法,但不起作用
select convert(time,'180000')
select cast('180000' as time)
另一种方法
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);
试试这个:
select cast((substring('180000',0,3)+':'+substring('180000',3,2)+':'+substring('180000',5,2)) as time)
select cast(format(180000, '00:00:00') as time), cast(format(131, '00:00:00') as time)
一种选择是使用 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