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

como mudar a data para hora no oracle 10g


Eu tenho que colocar STIMING um tempo

Oracle não tem um TIME tipo de dados. A DATE tipo de dados é sempre armazenado internamente como 7 bytes e é sempre composto por ano (2 bytes) e mês, dia, horas, minutos e segundos (1 byte cada).

Você não pode não tem um componente de ano, mês ou dia de um DATE .

Se você quiser um horário por conta própria, precisará armazená-lo como um tipo de dados diferente ou armazenar o ano/mês/dia e ignorar esse componente.

Quando você está SELECT ndo o STIMING coluna não está mostrando o componente de tempo. Você pode alterar isso alterando o formato de data padrão definido no NLS_DATE_FORMAT parâmetro de sessão.

Você pode revisar este parâmetro usando:
SELECT VALUE FROM NLS_SESSION_PARAMETERS WHERE PARAMETER = 'NLS_DATE_FORMAT';

Você pode definir esse valor em sua sessão atual usando:
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';

(Observação:isso não altera o valor para nenhum outro usuário.)

Ao inserir a data, você pode usar:
INSERT INTO shift ( SNO, SNAME, STIMING)
VALUES ( 121323, 'morning', TO_DATE( '01-APR-2017 07:00' DD-MON-YYYY HH24:MI' ) )

Ou um ANSI TIMESTAMP literal (que será convertido implicitamente para o DATE formato da coluna):
INSERT INTO shift ( SNO, SNAME, STIMING)
VALUES ( 121323, 'morning', TIMESTAMP '2017-04-01 07:00:00' )