Вы не хотите урезать дату. Вы хотите извлечь час / время. Вы можете извлечь время, используя cast()
:
SELECT actor_id AS SRT_ID,
shift_date,
DATE_TRUNC('hour', from_unixtime(shift_start)) AS login,
DATE_TRUNC('hour', from_unixtime(shift_end)) AS logout,
CAST(from_unixtime(shift_start) as time) AS login_hh,
CAST(from_unixtime(shift_end) as time) AS logout_hh,
FROM fct_rep_schedule_details
WHERE ds BETWEEN '2018-12-01' AND '2019-01-15';
Если вы хотите контролировать форматирование времени, используйте to_char()
:
SELECT actor_id AS SRT_ID,
shift_date,
DATE_TRUNC('hour', from_unixtime(shift_start)) AS login,
DATE_TRUNC('hour', from_unixtime(shift_end)) AS logout,
TO_CHAR(from_unixtime(shift_start), 'HH:MI') AS login_hh,
TO_CHAR(from_unixtime(shift_end), 'HH:MI') AS logout_hh,
FROM fct_rep_schedule_details
WHERE ds BETWEEN '2018-12-01' AND '2019-01-15';