Почему
select trunc(to_date('23/06/2017','DD/MM/YYYY'), 'DAY') from dual;
возвращает
19.06.17
вместо ожидаемого
23.06.17
Мы находимся на Oracle 11.
Формат DAY возвращает ближайший начальный день недели. В зависимости от конфигурации вашей БД это может быть воскресенье, понедельник (в вашем случае) ...
DAY
Возможно, вам нужен формат DD.
DD
Oracle doc
DAY усекает до ближайшего воскресенья [1]
Вы можете использовать DD.
select trunc(to_date('23/06/2017','DD/MM/YYYY'), 'DD') from dual;
Ваш формат неверный, должен быть DD формат :
Модели формата даты для функций даты ROUND и TRUNC DDD DD J День
Модели формата даты для функций даты ROUND и TRUNC
DDD DD J День