Princípios de Manipulação de Datas no Oracle: Conversão e Inserção de Valores de Data

O tipo de dado DATE no Oracle é utilizado para armazenar informações de data e hora, incluindo ano, mês, dia, hora, minuto e segundo. Quando se exibe um valor DATE, o Oracle o converte automaticamente em uma string usando a função TO_CHAR com o formato padrão "DD-MON-YY". Para personalizar a exibição, é possível invocar explicitamente TO_CHAR com um formato desejado.

Por exemplo, considere uma tabela chamada eventos:

CREATE TABLE eventos (id NUMBER, ocorrencia DATE);

Ao executar SELECT ocorrencia FROM eventos;, o resultado pode ser 01-APR-23 em inglês ou 01-ABR-23 em português, dependendo das configurações de linguagem. Para exibir em um formato específico:

SELECT TO_CHAR(ocorrencia, 'DD/MM/YYYY HH24:MI:SS') AS ocorrencia_formatada FROM eventos;

A função TO_CHAR suporta diversos especificadores, como YYYY para ano com quatro dígitos, MM para mês numérico, DD para dia, HH24 para hora no formato 24 horas, MI para minutos e SS para segundos.

Para inserir dados do tipo DATE, utiliza-se a função TO_DATE para converter strings em valores de data. O Oracle também realiza uma conversão implícita usando o formato padrão, mas geralmente é necessário especificar um formato explícito para maior precisão.

Exemplo de inserção com formato personalizado:

INSERT INTO eventos (id, ocorrencia) VALUES (101, TO_DATE('2023-05-31 14:30:00', 'YYYY-MM-DD HH24:MI:SS'));

A sintaxe de TO_DATE é semelhante a TO_CHAR: TO_DATE(string, formato), onde a string reprseenta a data e o formato define a interpretação.

O formato padrão de data pode ser alterado na sessão atual usando o comando:

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';

Após essa alteração, inserções como INSERT INTO eventos (ocorrencia) VALUES ('2023-07-15'); funiconarão sem a necessidade de TO_DATE, mas recomenda-se o uso explícito para portabilidade.

A função SYSDATE retorna a data e hora atuais do sistema. Para exibi-la:

SELECT TO_CHAR(SYSDATE, 'Dy DD-Mon-YYYY HH24:MI:SS') AS "Horário Atual" FROM DUAL;

Note que DUAL é uma tabela dummy utilizada em conslutas que não envolvem tabelas reais. Aspas duplas permitem nomes case-sensitive ou com espaços, como no alias "Horário Atual".

Valores DATE podem ser comparados com operadores como = ou >, e operações aritméticas simples são permitidas. Subtrair duas datas resulta em um número de dias (possivelmente com frações). Adicionar ou subtrair números inteiros a uma data altera-a em dias correspondentes, como em SYSDATE + 1 para o dia seguinte. Operações como multiplicação ou divisão não são suportadas diretamente em valores DATE.

Além disso, funções de string podem ser usadas com TO_CHAR para filtrar datas, por exemplo: TO_CHAR(ocorrencia, 'MM') = '06' para selecionar datas em junho.

Tags: Oracle SQL TO_CHAR TO_DATE Date

Publicado em 7-15 23:22