domingo, 16 de janeiro de 2011

Oracle: to_date e to_char

Com o surgimento de soluções ORM, lá se foi o tempo primevo em que se escrevia código para persistência em JDBC.

Depois de tanto tempo utilizando um framework ORM, a prática de escrever SQL ficou pra trás, pois assoluções ORM abstraem uma série de detalhes, facilitando e muito a vida. Contudo, não é raro precisarmos acessar o banco (via SQL Developer e similares) para fazer algumas consultas com o objetivo de verificar alguns dados e etc. Nesta hora, coisas que fazíamos e muito no passado já não estão tão frescas na memória. Por exemplo, escrever uma query para comparar datas. Sendo um pouco mais detalhista, uma query que se baseie em um campo date do Oracle.

É aí que entram as duas funções do título deste post: to_date e to_char.

Para os exemplos deste post, foi utilizada uma tabela com os seguintes campos e dados:

to_date
Basicamente, a função to_date converte uma string para uma data (date).
Exemplos de utilização:
select *
from cliente
where dt_nascimento = to_date('31/12/1989', 'dd/mm/yyyy');

select *
from cliente
where dt_nascimento between to_date('25/07/1981','dd/mm/yyyy')
and to_date('25/08/1981','dd/mm/yyyy');
Nos dois exemplos acima, a máscara utilizada dd/mm/yyyy significa: dia do mês / mês / ano com 4 digitos. Existem muitas outras opções para formar a máscara, como por exemplo HH24, MI e SS que representam respectivamente a hora do dia (0 a 23), os minutos e segundos. A primeira query retornará a linha de id 3. Já a segunda, retornará a linha de id 2.
  
to_char
A função to_char, converte uma data (date) ou um número (number) para uma string.
Exemplo de utilização:
select *
from cliente
where to_char(dt_nascimento, 'ddmmyyyy') = '01011980';
Novamente utiliza-se a máscara. A explicação dada anteriormente também vale aqui. A query acima retornará a linha de id 1.

Finalizando, o cenário acima foi executado no Oracle 10g XE.

Nenhum comentário:

Postar um comentário