Это прекрасно работает для меня (с помощью dbVisualizer).
Проблема связана с вашим SQL клиентом.
SQL клиенты часто применяют форматирование, которое влияет на значения, которые вы видите. Вы можете проверить это, преобразовав значения в текст перед отправкой их вашему SQL клиенту:
SELECT
'2020-01-24 14:27:12' AT TIME ZONE 'US/Pacific' as foo,
foo::text as t,
EXTRACT(HOUR FROM foo) as ex,
DATE_PART('HOUR', foo::timestamp) as dp
Для меня это приводит к:
2020-01-24 22:27:12+00 2020-01-24 22:27:12+00 22.0 22.0
Попробуйте это в вашем SQL клиент и посмотрим, что получится.