Si, si se puede.. aunque dejarla genérica te da el beneficio de reutilizarla en cualquier otra aplicación y/o proceso ya que tendría una funcionalidad especifica...
El resto es solo manejo de cadenas que no tienen que ver con la funcionalidad principal.. p.ejemplo..
Código:
DECLARE @HISAP2 NVARCHAR(10) = '420'
,@FISAP DATETIME = '20120710'
SET @hisap2 = RIGHT('0000' + @hisap2, 4)
SELECT CAST( CONVERT(VARCHAR, @fisap,112)
+ ' '
+ SUBSTRING(@hisap2,1,2)
+ ':'
+ SUBSTRING(@HISAP2,3,2) AS DATETIME) [FISAP]
Y el resultado:
Código:
FISAP
-----------------------
2012-07-10 04:20:00.000
Saludos!