I think you should be able to use:
//{@time}:
numbervar x := tonumber({table.starttime});
time(truncate(x),round(remainder(x,truncate(x))*60),0)
datetime({table.shiftdate},{@time})
If this doesnt' work, what error message are you getting?
The issue of whether there are multiple starts in the database is some other issue where we'd need to see some sample data along with an explanation of what you're trying to do.
-LB