Olá!
O tipo de dado (data_type) TIMESTAMP no banco de dados (db) Oracle armazena a combinação de data e hora. De modo que os formatos aceitos em uma instrução SQL para a manipulação desse tipo de dado, são:
Sendo que para cada item do timestamp há as regras:
- yyyy-mm-dd hh:mm:ss[.nnnnnn]
- yyyy-mm-dd-hh.mm.ss[.nnnnnn]
- yyyy - Ano
- Sempre deve possuir quatro dígitos
- mm, dd, hh - Mês, Dia, Hora
- Podem possuir de um a dois dígitos. Ou seja, para os números de 1 até 9 não é necessário usar o zero à esquerda.
- mm, ss - Minutos, Segundos
- Sempre devem possuir dois dígitos. Note que a representação (mm) dos minutos também é a mesma utilizada para o mês, na função to_timestamp os minutos são representados por (mi).
- nnnnnn - Nanossegundos
- São opcionais, mas se presentes, podem ser descritos com um até seis dígitos.
Exemplo instrução SQL:
UPDATE nomeTabela
SET nomeColuna = TIMESTAMP'2017-05-27 4:32:25'
WHERE condição;
Outra forma de trabalhar com o timestamp é com a função to_timestamp. Que recebe um texto (string) e converte para timestamp, exemplos:
UPDATE nomeTabela
SET nomeColuna = to_timestamp('27/05/2017', 'dd/mm/yyyy')
WHERE condição;
UPDATE nomeTabela
SET nomeColuna = to_timestamp('20170527', 'yyyymmdd')
WHERE condição;
UPDATE nomeTabela
SET nomeColuna = to_timestamp('20170527043225', 'yyyymmddhhmiss')
WHERE condição;
Veja que a função recebe dois parâmetros. O primeiro é a string a ser convertida, e o segundo parâmetro é o formato para encontrar os itens do timestamp dentro da string a ser convertida.
*Se mês igual a zero, é retornado:
Erro de SQL: ORA-01843: not a valid month
*Se dia igual a zero, é retornado:
*Se dia igual a zero, é retornado:
Erro de SQL: ORA-01847: day of month must be between 1 and last day of month
FELIPE BARBOSA FERREIRA
Até o próximo post!