最初に変数のコロンのインデックスを選択し、それに基づいて文字列の解析を実行することをお勧めします。SSMS で使用した未加工のコードは次のとおりです。
declare @fecha varchar(30)
set @fecha='9:4:2'
select
cast(substring(@fecha, 1, HourLimiter - 1) as INT)
, cast(substring(@fecha, HourLimiter + 1, MinuteLimiter - HourLimiter - 1) as INT)
, cast(substring(@fecha, MinuteLimiter + 1, len(@fecha) - MinuteLimiter) as INT)
from (
select
charindex(':', @fecha) AS HourLimiter
, charindex(':', @fecha, charindex(':', @fecha)+1) AS MinuteLimiter
) t
set @fecha='29:59:59'
select
cast(substring(@fecha, 1, HourLimiter - 1) as INT)
, cast(substring(@fecha, HourLimiter + 1, MinuteLimiter - HourLimiter - 1) as INT)
, cast(substring(@fecha, MinuteLimiter + 1, len(@fecha) - MinuteLimiter) as INT)
from (
select
charindex(':', @fecha) AS HourLimiter
, charindex(':', @fecha, charindex(':', @fecha)+1) AS MinuteLimiter
) t
SQLFiddleにもテーブルベースのソリューションがあります。