Assuming you are not crossing Midnight:
select round((extract(epoch from '15:09:00'::time - '11:53:00'::time)/3600)::numeric, 2) AS duration;
duration
----------
3.27
--Generic form
select round((extract(epoch from lndg_final_time - tkof_01_time)/3600)::numeric, 2) AS duration;
Personally I would use timestamp with time zone
for the fields. Then you have 'anchored' times and less confusion especially if you do end up crossing Midnight and/or DST boundaries. You would still subtract the beginning timestamp from the final timestamp to get an interval to extract the epoch from.