to_date(date_begin::text, 'DD.MM.YYYY'::text)
т.е. у нас есть поле date_begin в формате datetime, а мы его кастуем в текст. Затем из текста по какому-то непонятному формату получаем дату.
А все это работает скорее всего потому, что в php при подключении к БД используется формат даты 'DD.MM.YYYY', поэтому эта бредятина работает, а когда напрямую подключились к базе, там вероятно дефолтный 'YYYY-MM-DD' и получается чушь на выходе.
В общем удалите эту дикость и посмотрите как в PostgreSQL нормально получить date без промежуточного преобразования в строку.