Subtrair intervalo de uma data
Tecnologia da Informação

Subtrair intervalo de uma data


Vamos mostrar neste artigo, como subtrair um período de uma data. Descrevemos 3 exemplos:
Caso tenha interesse, faça o download dos exemplos, ou veja no GitHub.

1º Exemplo

Um mercado deve recolher os produtos das prateleiras três dias antes da data de vencimento. Para calcular a data de recolhimento dos produtos vamos utilizar a tabela "tb_produtos".

tb_produtos
Descrição das colunas
Temos duas formas para resolver este exemplo.

1ª Solução

Para subtrairmos dias de uma data vamos utilizar o operador "-".

data n

Onde n: número de dias

Para exibir as datas de recolhimento, vamos executar a consulta abaixo:

SELECT
produto_id,
data_vencimento,
data_vencimento - 3 AS data_recolhimento
FROM tb_produtos;

Após a execução da sentença, será exibida a data de recolhimento. Veja na imagem a seguir.


Caso haja necessidade, formate as datas através do comando to_char. Veja o comando abaixo:

SELECT
produto_id,
to_char (data_vencimento, 'dd/mm/yyyy'),
to_char (data_vencimento - 3, 'dd/mm/yyyy') AS data_recolhimento
FROM tb_produtos;

Após a execução da sentença, será exibido o resultado. Veja na imagem a seguir.



Caso queira saber mais sobre formatação de data veja o artigo:
PostgreSql - Formatar data

2ª Solução

Podemos subtrair um intervalo de uma data.

 data - inverval 'n período '
Onde:

Para resolver este exemplo vamos utilizar a unidade de tempo days, pois queremos subtrair dias.

Para exibir as datas de recolhimento, vamos executar a consulta abaixo:

SELECT
produto_id,
data_vencimento,
data_vencimento - interval '3 days' AS data_recolhimento
FROM tb_produtos;

Após a execução da sentença, será exibido o resultado. Veja na imagem a seguir.



Perceba que quando subtraimos um intervalo de uma data, será retornado além da data a hora (timestamp).

Caso haja necessidade, formate as datas através do comando to_char. Veja o comando abaixo:

SELECT
produto_id,
to_char (data_vencimento, 'dd/mm/yyyy') AS data_vencimento,
to_char (data_vencimento - interval '3 days', 'dd/mm/yyyy') AS data_recolhimento
FROM tb_produtos;

Após a execução da sentença, será exibido o resultado. Veja na imagem a seguir.



2º Exemplo

Uma imobiliária deve oferecer aos seus locatários uma renovação de contrato três meses antes do término do contrato. Para calcular a data de oferta de renovação, vamos utilizar a tabela "tb_locacao".

tb_locacao

Descrição das colunas
Solução

Podemos subtrair um intervalo de uma data.

 data - inverval 'n período'

Onde:

Para exibir as datas de oferta de renovação executamos a consulta abaixo:

SELECT
locatario_id,
imovel_id,
data_fim_contrato,
data_fim_contrato - interval '3 months' AS oferta_renovacao
FROM tb_locacao;

Após a execução da sentença, será exibido o resultado. Veja na imagem a seguir.



Caso haja necessidade, formate as datas através do comando to_char. Veja o comando abaixo:

SELECT
locatario_id,
imovel_id,
to_char (data_fim_contrato, 'dd/mm/yyyy'),
to_char (data_fim_contrato - interval '3 months', 'dd/mm/yyyy') AS oferta_renovacao
FROM tb_locacao;

Após a execução da sentença, será exibido o resultado. Veja na imagem a seguir.



3º Exemplo

Uma academia quer consultar quantos alunos se matricularam nos últimos 7 dias. O dia que executei esta consulta era 01/04/2014, ou seja iremos fazer a contagem dos alunos que se matricularam do dia 26/03/2014 até o dia 01/04/2014.
Para verificar a quantidade de alunos matriculados vamos utilizar a tabela "tb_matriculas".

tb_matriculas

Descrição das colunas
Solução

Para saber a quantidade de alunos matriculados nos últimos 7 dias devemos subtrair 7 dias do dia atual (hoje)
Para retornar o dia de hoje utilizamos a função CURRENT_DATE.


Agora que já sabemos retornar o dia de hoje, vamos subtrair 7 dias da data de hoje.

 CURRENT - inverval 'n período'

Onde:
Além disso vamos utilizar a função "COUNT" para fazer a contagem dos alunos.

Para exibir a quantidade de alunos matriculado nos últimos 7 dias executamos a consulta abaixo:

SELECT
COUNT(matricula_id) AS quantidade_alunos
FROM tb_matriculas
WHERE data_matricula > CURRENT_DATE - interval 'days';

Após a execução da sentença, será exibido o resultado. Veja na imagem a seguir.


Deixe o seu comentário. Suas sugestões ou críticas serão bem-vindas.



loading...

- Postgresql - Função Lag - Diferença De Tempo Para Uma Mesma Coluna
Vamos apresentar 4 exemplos de como calcular a diferença de período para uma mesma coluna. Para isto vamos utilizar a função LAG do PostgreSql. Está função pertence ao grupo das Window Functions e funciona a partir do PostgreSQL 8.4.22 Caso tenha...

- Postgresql - Função Count
O artigo apresenta 8 exemplos de como utilizar a função de agrupamento "count", das seguintes formas: COUNT(*);COUNT(nome_da_coluna);COUNT COM GROUP BY;COUNT(DISTINCT(nome_da_coluna)); Caso tenha interesse faça o download dos scripts ou veja no GitHub. ...

- Mysql - Diferença Entre Datas
Neste post vamos apresentar 4 exemplos de como calcular a diferença entre datas. Para calcular a diferença entre duas datas, em dias, utilizamos a função "DATEDIFF". Esta função é utilizada no 1º e 2º exemplos. DATEDIFF (data_final, data_inicial)...

- Postgresql - Diferença Entre Datas
Neste post vamos apresentar 4 exemplos de como calcular a diferença entre datas. Caso tenha interesse, faça o download ou veja o script no Github. Para calcular a diferença entre duas datas, em dias, no postgresql utilizamos o operador aritmético...

- Postgresql - Extrair Parte De Uma Data Com Extract
A função extract extrai parte de uma data ou intervalo. Ela é equivalente a função date_part. Vamos descrever 3 exemplos com a função extract. Caso tenha interesse faça download dos exemplos ou veja no GitHub. 1º Exemplo: vamos extrair partes...



Tecnologia da Informação








.