Вместо этого substr
вам нужно использовать extract
или date_part
с отметкой времени и именем поля для извлечения, например, «час» или «день».
Вызов to_number
результатов не является необходимым, поскольку эти функции производят числа, а не строки.
См. Документ по адресу https://www.postgresql.org/docs/current/static/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT.