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 |
id | nome |
1 | Infantil |
2 | Informatica |
3 | Educacional |
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 |
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 |
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 |
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 |
Confira também
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo