3.1 Lista de funções para trabalhar com data e hora
Data e hora são um dos tipos mais comuns de dados armazenados em bancos de dados. É por isso que a lista de funções para trabalhar com eles é muito grande. Aqui estão os mais populares:
# | Função | Descrição |
---|---|---|
1 | CURDATE() | Retorna a data atual |
2 | CURTIME() | Retorna a hora atual |
3 | NOW(), LOCALTIME() | Retorna a data atual e a hora atual |
4 | ANO() | Retorna o ano a partir da data |
5 | MÊS() | Retorna o mês de uma data |
6 | DIA(), DIA DO MÊS() | Retorna o dia de uma data |
7 | HORA() | Retorna apenas algumas horas depois |
8 | MINUTO() | Anuncia minutos antes do tempo |
9 | SEGUNDO() | Retorna os segundos do tempo |
10 | DAYNAME() | Retorna o nome do dia da semana: Monday, ... |
onze | MONTHNAME() | Retorna o nome do mês: janeiro, ... |
12 | SEMANA() | Retorna a semana de uma data |
13 | SEMANA() | Retorna o número do dia da semana: segunda-feira - 0, terça-feira - 1 |
14 | SEMANA DO ANO() | Retorna o número da semana do ano |
15 | DIA DA SEMANA() | Retorna o número do dia da semana: Domingo - 1, Segunda-feira - 2 |
16 | DIADOANO() | Retorna o dia do ano: 1-366 |
17 | DATA() | Retorna apenas a data de um objeto "datetime" |
18 | ADICIONAR() | Adiciona dias a uma data |
19 | SUBDATA() | Subtrai dias de uma data |
20 | TEMPO EXTRA() | Adiciona tempo ao tempo |
21 | SUBTIME() | Subtrai tempo de tempo |
Agrupei deliberadamente as funções em pequenos grupos para facilitar a compreensão de como trabalhar com elas. A seguir, consideraremos uma função de cada grupo.
Você pode encontrar uma lista completa de funções para trabalhar com data e hora no link: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html
3.2 Funções de chamada
A propósito, como estamos aprendendo tantas funções, acho útil mencionar que o operador SELECT
não precisa ser usado com FROM
. Ele pode retornar o valor de qualquer expressão. A visão geral é dada pelo modelo:
SELECT expression
E se você quiser chamar alguma função, precisará escrever um código como:
SELECT function(options)
A seguir darei alguns exemplos do funcionamento do operador SELECT
sem recurso a tabelas:
# | Solicitar | Resultado |
---|---|---|
1 | SELECIONE 1+1 | 2 |
2 | SELECIONE 13 MOD 5 | 3 |
3 | SELECIONE ALEATÓRIO() | 0,20771444235715497 |
4 | SELECT CURDATE() | 2022-06-04 |
5 | SELECIONE HORÁRIO() | 00:06:02 |
6 | SELECIONE AGORA() | 04/06/2022 00:06:43 |
E, como você pode ver, na tabela acima, para obter a data e hora atual, basta usar uma das funções:
CURDATE()
- data atual;CURTIME()
- hora atual;NOW()
– data e hora atuais.
3.3 Agrupando dados por ano e mês
Vamos relembrar nossa tabela de tarefas com tarefas para funcionários. Vamos tentar agrupar as tarefas desta tabela por anos. Para isso, utilizamos a função YEAR()
, que retorna o ano a partir da data passada para ela.
A primeira versão da nossa consulta ficará assim:
SELECT
id,
employee_id ,
name,
YEAR(deadline) AS year,
deadline
FROM task
O resultado desta consulta será:
eu ia | ID do Empregado | nome | ano | prazo final |
---|---|---|---|---|
1 | 1 | Corrigir um bug no front-end | 2022 | 01/06/2022 |
2 | 2 | Corrigir um bug no back-end | 2022 | 15/06/2022 |
3 | 5 | comprar café | 2022 | 01/07/2022 |
4 | 5 | comprar café | 2022 | 01/08/2022 |
5 | 5 | comprar café | 2022 | 01/09/2022 |
6 | (NULO) | Limpe o escritório | (NULO) | (NULO) |
7 | 4 | Aproveite a vida | (NULO) | (NULO) |
8 | 6 | Aproveite a vida | (NULO) | (NULO) |
Podemos ver que todas as linhas têm o mesmo ano, então vamos usar dois campos - ano e mês. A segunda versão da nossa consulta ficará assim:
SELECT
id,
employee_id ,
name,
YEAR(deadline) AS year,
MONTH(deadline) AS month,
deadline
FROM task
O resultado desta consulta será:
eu ia | ID do Empregado | nome | ano | mês | prazo final |
---|---|---|---|---|---|
1 | 1 | Corrigir um bug no front-end | 2022 | 6 | 01/06/2022 |
2 | 2 | Corrigir um bug no back-end | 2022 | 6 | 15/06/2022 |
3 | 5 | comprar café | 2022 | 7 | 01/07/2022 |
4 | 5 | comprar café | 2022 | 8 | 01/08/2022 |
5 | 5 | comprar café | 2022 | 9 | 01/09/2022 |
6 | (NULO) | Limpe o escritório | (NULO) | (NULO) | (NULO) |
7 | 4 | Aproveite a vida | (NULO) | (NULO) | (NULO) |
8 | 6 | Aproveite a vida | (NULO) | (NULO) | (NULO) |
Não vou dizer como agrupar tarefas por ano e mês - você já estudou isso: use o operador GROUP BY
.