Даты не имеют формата - они представлены внутри 7 или 8 байтами .
Если вы хотите, чтобы дата имела формат, вам необходимо преобразовать ее в тип данных, который можно отформатировать - то есть строку:
TO_CHAR( TO_DATE( '20180924', 'yyyymmdd' ) + 29, 'YYYYMMDD' )
Когда SQL / Plus (или SQL Developer) отображает типы данных даты, они неявно преобразуют их в строки (поскольку это более важно для вас, пользователя, чем отображение необработанных байтов) и используют параметр сеанса NLS_DATE_FORMAT
в качестве Модель формата в этом неявном преобразовании. Если вы хотите изменить это, вы можете использовать:
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYYMMDD';
, а затем ваш запрос:
TO_DATE( '20180924', 'yyyymmdd' ) + 29
должен (при условии, что ваш клиент SQL использует этот параметр и не имеет своих собственных настроек внутреннего формата) давать ожидаемый результат. (Примечание: это изменит формат по умолчанию для клиента, чтобы отображать все даты в этом сеансе, а не только этот один оператор.)