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.