Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Formatando DATE no oracle


:Por favor, use o formato de data aaaa-MM-dd !!!

Isso não está relacionado a um erro do Oracle.

Eu tenho um campo de data em uma tabela que contém data no formato dd-MMM-aa .

Não, você está confuso. O Oracle não armazena datas no formato que você vê. Ele o armazena internamente em 7 bytes com cada byte armazenando diferentes componentes do datetime valor.
Byte    Description
----    -------------------------------------------------
1       Century value but before storing it add 100 to it
2       Year and 100 is added to it before storing
3       Month
4       Day of the month
5       Hours but add 1 before storing it
6       Minutes but add 1 before storing it
7       Seconds but add 1 before storing it

Se você deseja exibir, use TO_CHAR com o MODELO DE FORMATO adequado .

Ao inserir, use TO_DATE com o MODELO DE FORMATO adequado .

O que você vê como um formato por padrão são suas configurações de NLS específicas de localidade .
SQL> select parameter, value from v$nls_parameters where parameter='NLS_DATE_FORMAT';

PARAMETER       VALUE
--------------- ----------------------------------------------------------------
NLS_DATE_FORMAT DD-MON-RR

SQL> select sysdate from dual;

SYSDATE
---------
03-FEB-15

SQL> select to_char(sysdate, 'mm/dd/yyyy hh24:mi:ss') from dual;

TO_CHAR(SYSDATE,'MM
-------------------
02/03/2015 17:59:42

SQL>

Atualizar Em relação ao MMM formato.

Por MMM, se você quer dizer o nome do mês com até três caracteres, use MON .