SQL: Data e Hora

O SQL nos fornece funções pré-definidas para trabalharmos com informações relacionadas ao tipo DATE, podendo selecionar apenas o dia, mês ou ano de um campo com este tipo.

O SQL nos fornece funções pré-definidas para trabalharmos com informações relacionadas ao tipo DATE, podendo selecionar apenas o dia, mes ou ano de um campo com este tipo.


Guia do artigo:

Visao geral

A manipulação de partes específicas de uma campo DATE é uma tarefa comum para o desenvolvedor. Ele pode utilizar partes de determinada coluna para realizar filtros, cálculos ou outra ação que auxilie na coleta da informação desejada.

Para os exemplo a seguir, considere a estrutura de tabelas abaixo, onde temos uma tabela chamada produto (Tabela 1), responsável por armazenar todos os produtos do estoque do cliente, a tabela categoria_produto (Tabela 2), responsável por armazenar todas as categorias existentes no banco de dados, e a tabela venda_produto (Tabela 3), que relaciona os produtos que foram vendidos.

id nome preco Id_categoria
1 Bola 35.00 1
2 Patinete 120.00 1
3 Carrinho 15.00 1
4 Skate 296.00 1
5 Notebook 3500.00 2
6 Monitor LG 19 450.00 2
7 O Diário de Anne Frank 45.00 3
8 O dia do Curinga 65.00 3
9 O mundo de Sofia 48.00 3
10 Através do Espelho 38.00 3
Tabela 1. Tabela produto
id nome
1 Infantil
2 Informatica
3 Educacional
Tabela 2. Tabela categoria_produto
id id_produto valor data
1 1 35.00 2018-05-15
2 1 35.00 2018-06-15
3 1 35.00 2018-07-15
4 2 120.00 2018-07-15
5 2 120.00 2018-07-14
6 3 15.00 2018-07-15
7 7 45.00 2018-07-15
8 8 65.00 2018-07-15
9 8 65.00 2018-07-16
10 9 48.00 2018-07-16
11 5 3500.00 2018-07-16
12 5 3500.00 2018-07-16
13 6 450.00 2018-07-16
Tabela 3. Tabela venda_produto

Suponha que seja necessário trazer o total de vendas de cada produto vendido no ano de 2018. Para isso podemos utilizar a query abaixo:

SELECT P.nome as PRODUTO, COUNT(V.id_produto) as TOTAL_VENDIDO FROM produto P, venda_produto V WHERE P.id = V.id_produto AND YEAR(V.data) = 2018 GROUP BY P.id;

No trecho de código acima, nas linhas 2 e 3 selecionamos o nome do produto e o total de ID_PRODUTO, nomeado de TOTAL_VENDIDO.

Na linha 5 informamos que os dados serão consultados nas tabelas produto, nomeada de P, e na tabela venda_produto, nomeada de V.

Nas linhas 6 e 7 é onde acontece o principal para esta query. Na linha 6 é feito o vínculo entre as duas tabelas e, logo em seguida, na linha 7 definimos o filtro da consulta: O ano do campo DATA deve ser igual a 2018.

O resultado da query pode ser visto abaixo na Tabela 4.

PRODUTO TOTAL_VENDIDO
Bola 3
Patinete 2
Carrinho 1
Notebook 2
Monitor LG 19 1
O Diário de Anne Frank 1
O dia do Curinga 2
O mundo de Sofia 1
Tabela 4. Resultado da pesquisa de vendas no ano de 2018

Sintaxe

SELECT [ DAY | MONTH | YEAR (tabela1.coluna), ... | * ] FROM [ tabela1 ]

Na prática

Exemplo 1

Para um novo exemplo, suponha que seja necessário saber exatamente qual os dois meses mais lucrativos do ano. Para isso podemos utilizar a query abaixo:

SELECT MONTH(V.data) as MES, SUM(V.valor) as TOTAL_RECEBIDO FROM venda_produto V GROUP BY MES ORDER BY TOTAL_RECEBIDO DESC LIMIT 0, 2

No trecho de código acima, nas linhas 2 e 3 selecionamos o mês através da função MONTH e em seguida selecionamos a soma dos valores vendidos.

Logo após informamos na linha 5 que a consulta será feita na tabela venda_produto, nomeada de V.

Na linha 7 informamos que os dados serão agrupados por MES e na linha 9 ordenamos a consulta pelo valor TOTAL_RECEBIDO do maior para o menor.

O resultado da query pode ser visto abaixo na Tabela 5

MES TOTAL_RECEBIDO
7 7963.00
5 35.00
Tabela 5. Resultado da pesquisa do mês com mais rendimento no ano.

Exemplo 2

Para este exemplo, suponha que seja necessário trazer na consulta todos os produtos que foram vendidos no dia 15 de julho. Para isso podemos utilizar a query abaixo:

SELECT P.nome as PRODUTO FROM produto P, venda_produto V WHERE P.id = V.id_produto AND DAY(V.data) = 15 AND MONTH(V.data) = 7 GROUP BY P.id

No trecho de código acima, o trecho principal esta nas linhas 7 e 8, onde definimos que o dia deve ser 15 e o mês deve ser 7 (JULHO)

O resultado da query pode ser visto abaixo na Tabela 6.

PRODUTO
Bola
Patinete
Carrinho
O Diário de Anne Frank
O dia do Curinga
Tabela 6. Resultado da pesquisa dos produtos vendidos dia 15 de julho

Confira também

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados