只有解决您的问题
下面是我如何解剖您的格式和应用基本的算术得到秒。
declare @mytime varchar(100) = '7H35M49S'
select
isnull(NULLIF(left(@mytime, IIF(charindex('H',@mytime)=0,0,charindex('H',@mytime)-1)),''),0) -- to get Hours
,isnull(NULLIF(replace(left(replace(@mytime,left(@mytime, IIF(charindex('H',@mytime)=0,0,charindex('H',@mytime))),''),charindex('M',replace(@mytime,left(@mytime, IIF(charindex('H',@mytime)=0,0,charindex('H',@mytime))),''))),'M',''),''),0) -- to get M
,isnull(nullif(
left(replace(replace(@mytime,left(@mytime, IIF(charindex('H',@mytime)=0,0,charindex('H',@mytime))),''), left(replace(@mytime,left(@mytime, IIF(charindex('H',@mytime)=0,0,charindex('H',@mytime))),''), IIF(charindex('M',replace(@mytime,left(@mytime, IIF(charindex('H',@mytime)=0,0,charindex('H',@mytime))),''))=0,0,charindex('M',replace(@mytime,left(@mytime, IIF(charindex('H',@mytime)=0,0,charindex('H',@mytime))),'')))),'')
,iif(charindex('S',
replace(replace(@mytime,left(@mytime, IIF(charindex('H',@mytime)=0,0,charindex('H',@mytime))),''), left(replace(@mytime,left(@mytime, IIF(charindex('H',@mytime)=0,0,charindex('H',@mytime))),''), IIF(charindex('M',replace(@mytime,left(@mytime, IIF(charindex('H',@mytime)=0,0,charindex('H',@mytime))),''))=0,0,charindex('M',replace(@mytime,left(@mytime, IIF(charindex('H',@mytime)=0,0,charindex('H',@mytime))),'')))),'')
) = 0,0,
charindex('S',
replace(replace(@mytime,left(@mytime, IIF(charindex('H',@mytime)=0,0,charindex('H',@mytime))),''), left(replace(@mytime,left(@mytime, IIF(charindex('H',@mytime)=0,0,charindex('H',@mytime))),''), IIF(charindex('M',replace(@mytime,left(@mytime, IIF(charindex('H',@mytime)=0,0,charindex('H',@mytime))),''))=0,0,charindex('M',replace(@mytime,left(@mytime, IIF(charindex('H',@mytime)=0,0,charindex('H',@mytime))),'')))),'')
)-1)
)
,'')
,0) -- to get S
演示在这里:
其SQL数据库? – maSTAShuFu
我正在使用SQL Server Management Studio 17 – Brady
这听起来像作业。你尝试过什么吗?顺便说一下,以这种格式存储时间是一个非常糟糕的主意。 –