Se você fizer:
alter session set nls_date_format='DD DDTH MON YYYY';
Você recebe um erro,
ORA-01810: format code appears twice
. Se você usa o mesmo modelo de formato que seu
TO_CHAR
então funciona:alter session set nls_date_format='DY DDTH MON YYYY';
Session altered.
select SYSDATE from dual;
SYSDATE
-----------------
FRI 23RD AUG 2013
Isso funciona no SQL Developer e no SQL*Plus.
Para sua pergunta atualizada sobre inserção, a documentação do formato datetime diz:
Portanto, você não pode usar uma string com o sufixo como parte de sua inserção, explicitamente ou por meio do
NLS_DATE_FORMAT
. Você teria que removê-lo da string ou adaptar o modelo de formato para tratar como um valor fixo.