Если вы используете более старую версию SQL Server, это будет работать:
DECLARE @times TABLE (
String VARCHAR(20),
Numeral TIME,
FriendlyString VARCHAR(20)
)
INSERT INTO @times (String) SELECT '0001'
INSERT INTO @times (String) SELECT '1200'
INSERT INTO @times (String) SELECT '2359'
UPDATE @times
SET Numeral=CONVERT(VARCHAR(20),CONVERT(INT,String)/100) + ':' + RIGHT('00' + CONVERT(VARCHAR(20),CONVERT(INT,String)%100),2)
,FriendlyString=
CONVERT(VARCHAR(20), CASE WHEN (CONVERT(INT,String)/100)%12 = 0 THEN 12 ELSE (CONVERT(INT,String)/100)%12 END ) + ':' +
RIGHT('00' + CONVERT(VARCHAR(20),CONVERT(INT,String)%100),2) + ' ' +
CASE WHEN (CONVERT(INT,String)/100)>=12 THEN 'PM' ELSE 'AM' END
select *
from @times