Here's my first guess at it; i left lots of stuff in there to look at to help understand it.
With PayRollHours (TheTime)
As
(
SELECT 1.5 UNION ALL
SELECT 30.75 UNION ALL
SELECT 40.00 UNION ALL
SELECT 95.25
)
SELECT DATEADD(minute,TotalMinutesInteger,'1900-01-01') ResultsAsDateTime,
CONVERT(VARCHAR(5),DATEADD(minute,TotalMinutesInteger,'1900-01-01'),108) ResultAsString,
*
FROM (
SELECT TheTime * 60 AS TotalMinutes,
CONVERT(int,TheTime * 60 ) As TotalMinutesInteger,
CONVERT(int,TheTime * 60 ) / 60 As HoursPortion,
CONVERT(int,TheTime * 60 ) %60 As MinutesPortion
FROM PayRollHours
) X
Lowell