Calcula horas de trabajo entre 2 fechas en PostgreSQL.

Estoy desarrollando un algoritmo con Postgres (PL / pgSQL) y necesito calcular el número de horas de trabajo entre 2 marcas de tiempo, teniendo en cuenta que los fines de semana no funcionan y el resto de los días solo se cuentan de 8:00 a 15:00.

Ejemplos:

Desde el 3 de diciembre a las 14:00 h. Hasta el 4 de diciembre a las 9:00 h debe contar 2 horas:

3rd = 1, 4th = 1

Desde el 3 de diciembre a las 15:00 y hasta el 7 de diciembre a las 8:00 h debe contar 8 horas:

3rd = 0, 4th = 8, 5th = 0, 6th = 0, 7th = 0

Sería genial considerar las fracciones de hora también.

Respuestas a la pregunta(3)

Su respuesta a la pregunta