Quando criamos colunas com tipo de dado Data, podemos realizar uma série de cálculos e operações cronológicas. Podemos calcular o número de dias entre duas datas, somar e subtrair dias, meses e etc.

O padrão SQL especifica quatro tipos de dados relacionados a data e hora:

Tipo Descrição
DATE Apenas data
TIME Apenas Hora
TIMESTAMP Data e Hora
INTERVAL Intervalo entre os dois tipos de dados anteriores

O padrão SQL definiu algumas funções para determinar a data e/ou hora atuais do sistema, acrescentando CURRENT_ antes dos três primeiros tipos anteriores: CURRENT_DATE, CURRENT_TIME E CURRENT_TIMESTAMP. Em alguns bancos de dados são utilizadas as mesmas funções, sem o ( _ ).

Para sabermos quais vendas lançadas no dia de hoje, execute:


    SELECT * FROM TABELA
    WHERE DATAVENDA = CURRENT_DATE;
    

Operações aritméticas com datas

Um coluna do tipo data é composta de seis elementos:

a Year (ano)
b Month (Mês)
c Day (dia)
d Hour (hora)
e Minute (minuto)
f Second (segundo)

A manipulação de datas e os cálculos que podem ser feitos dependem e variam muito em função do banco de dados utilizado. Convém consultar a documentação do seu banco de dados para certificar-se de como utilizá-la.

Dessa forma, é possível realizar operações como encontrar o intervalo de dias entre duas datas:


    SELECT CURRENT_DATE, DATAVENDA, CURRENT_DATE – DATAVENDA DIFERENCA FROM TABELA;
    

Adicionar dias em uma data (nos exemplos a seguir, acrescentam-se 7 dias da data de vendas);


    SELECT DATAVENDA + 7 FROM TABELA;
    

Podemos também fazer comparações com data, suponhamos que quisesermos todas vendas de hoje:


    SELECT NOME, DATAVENDA FROM TABELA
    WHERE DATAVENDA = CURRENT_DATE;
    

Queremos todos os registros entre o intervalo de 01-01-2000 até hoje;


    SELECT NOMNE, DATAVENDA FROM TABELA
    WHERE DATAVENDA BETWEEN ’01-01-2000’ AND CURRENT_DATE;
    

Trabalhando com Horas

Podemos também fazer comparações com hora, suponhamos que quisesermos o todos os registros entre a hora 08:00:00 até 20:00:00;


    SELECT HORAINI, HORAFIM FROM TABELA
    WHERE HORAINI BETWEEN ’08:00:00’ AND CURRENT_TIME;
    

Podemos extrair a diferença entre horas, veja o exemplo;


    SELECT HORAINI, HORAFIM, HORAFIM - HORAINI DIFERENCA FROM TABELA;
    

EXTRACT

Essa função extrai e retorna um valor de um campo do tipo data. É possível extrair apenas o dia, o mês, o ano, a hora, o minuto ou o segundo.

Veja exemplos:

  • Extraindo o mês:
    SELECT EXTRACT (MONTH FROM DATE ‘2005-09-29’) FROM TABELA;
  • Extraindo o Dia:
    SELECT EXTRACT (DAY FROM DATE ‘2005-09-29’) FROM TABELA;
  • Extraindo o ano:
    SELECT EXTRACT (YEAR FROM DATE ‘2005-09-29’) FROM TABELA;

Conclusão

Podemos perceber que não há segredo para trabalharmos com data e hora, podemos fazer n pesquisas e extrair vários valores de uma data, como forma de aprendizado, sugiro a você a fazer vários testes em seu banco de dados. No próximo artigo, irei mostrar como pesquisar em múltiplas tabelas. Até lá.