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 SELECTnã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 SELECTsem 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.