Funções de data e hora do MySQL

Funções de data e hora do MySQL

Manuseio data e hora os dados no MySQL são essenciais para muitas operações de banco de dados, especialmente quando se trata de lidar com carimbos de data/hora, agendar tarefas ou gerar com base no tempo. O MySQL fornece uma variedade de funções de data e hora que ajudam os usuários a trabalhar com valores de data, realizar cálculos e formatá-los conforme necessário.

Essas funções permitem que os desenvolvedores realizem cálculos, extraiam partes específicas de uma data ou até mesmo formatem a saída para melhor legibilidade. Neste artigo, exploraremos as funções de data do MySQL mais comumente usadas, explicaremos sua sintaxe, forneceremos exemplos e orientaremos você sobre como usá-las de maneira eficaz.

Compreendendo os tipos de dados de data e hora do MySQL

Trabalhar com datas no MySQL pode ser complicado para iniciantes, especialmente porque o formato da data no banco de dados deve corresponder ao formato dos dados de entrada durante a inserção. Em muitos casos, em vez de usar apenas uma data simples, poderemos precisar armazenar uma data e uma hora, dependendo do caso de uso. É aqui que DATETIME e TIMESTAMP tipos de dados entram em jogo.

MySQL fornece os seguintes tipos de dados para armazenar valores de data e hora:

1. DATA :

  • Formatar : YYYY-MM-DD
  • Utilizado para armazenar apenas a data (ano, mês e dia) sem nenhum componente de hora.

2. DATAHORA :

  • Formatar : YYYY-MM-DD HH:MM:SS
  • Armazena a data e a hora, tornando-o útil quando você precisa capturar horários específicos junto com a data.

3. TIMESTAMP :

  • Formatar : YYYY-MM-DD HH:MM:SS
  • Semelhante a DATETIME mas TIMESTAMP também inclui suporte para fuso horário. Ele é atualizado automaticamente para o carimbo de data/hora atual quando um registro é modificado, tornando-o ideal para rastrear alterações em registros ao longo do tempo.

4. ANO :

  • Formatar : YYYY ou YY
  • Usado para armazenar apenas o ano, o que pode ser útil para aplicações onde apenas o ano é necessário, como rastrear anos de nascimento ou anos fiscais.

Funções de data e hora do MySQL

Agora vamos mergulhar nas funções de data do MySQL que você pode usar para manipular e consultar dados de data e hora de maneira eficaz.

1. AGORA () - Obtenha a data e hora atuais

O AGORA() função recupera a data e hora atuais em AAAA-MM-DD HH:MI:SS formatar.

Consulta:

 SELECT NOW();   

Saída:

agora imagem de saída do método

2. CURDATE() - Obtenha apenas a data atual

Se precisarmos apenas da data atual sem a parte da hora, podemos usar CURDATE() que retorna a data em YYYY-MM-DD formatar.

Consulta:

 SELECT CURDATE();   

Saída: 

SAÍDA2

3. CURTIME() - Obtenha apenas a hora atual

A função CURTIME() retorna a hora atual em HH:MI:SS formato excluindo a data.

Consulta:

 SELECT CURTIME();   

Saída: 

SAÍDA3

4. DATE() - Extraia a parte da data de um valor DATETIME

O DATE() função extrai apenas a parte da data de um DATETIME ou TIMESTAMP valor descartando o tempo.

Exemplo: Para uma mesa chamada users :

Eu ia Nome Hora de Nascimento
4120 Prática 26/09/1996 16:44:15.581

Consulta:

 SELECT Name DATE(BirthTime)    
AS BirthDate FROM Test;

Saída:

Nome Data de Nascimento
Prática 26/09/1996

5. EXTRACT() - Extrai partes de datas específicas

EXTRACT() é usado para extrair partes específicas de uma data, como o dia, mês ou ano. Esta função pode ser especialmente útil ao analisar ou comparar diferentes partes de uma data. Várias unidades podem ser consideradas, mas apenas algumas são usadas, como MICROSSEGUNDO SEGUNDO MINUTO HORA DIA SEMANA MÊS TRIMESTRE ANO etc. E 'data' é uma expressão de data válida.

Sintaxe:

EXTRAIR(unidade DE data);

Consulta para Extrair Dia:

 SELECT Name Extract(DAY FROM    
BirthTime) AS BirthDay FROM Test;

Saída: 

Nome Aniversário
Prática 26

Consulta para Extrair Ano:

 SELECT Name Extract(YEAR FROM BirthTime)   
AS BirthYear FROM Test;

Saída: 

Nome Ano de Nascimento
Prática 1996

Consulta para extrair segundos:

 SELECT Name Extract(SECOND FROM    
BirthTime) AS BirthSecond FROM Test;

Saída:

Nome NascimentoSegundo
Prática 581

6. DATE_ADD() – Adicionar intervalos a uma data

O DATA_ADD() função permite adicionar intervalos de tempo (por exemplo, dias meses anos) a uma data ou DATETIME valor.

Sintaxe:

DATE_ADD(tipo de data INTERVAL expr);

Exemplo: Para a tabela abaixo chamada ' Teste '

Eu ia Nome Hora de Nascimento
4120 Prática 26/09/1996 16:44:15.581

Consultar para Adicione 1 ano a uma data

 SELECT Name DATE_ADD(BirthTime INTERVAL    
1 YEAR) AS BirthTimeModified FROM Test;

Saída:

Nome Hora de nascimento modificada
Prática 26/09/1997 16:44:15.581

Consulta para adicionar 30 dias a uma data

 SELECT Name DATE_ADD(BirthTime    
INTERVAL 30 DAY) AS BirthDayModified FROM Test;

Saída:

Nome AniversárioModificado
Prática 26/10/1996 16:44:15.581

Consulta para adicionar 4 horas a uma data

 SELECT Name DATE_ADD(BirthTime INTERVAL   
4 HOUR) AS BirthHourModified FROM Test;

Saída: 

Nome NascimentoSegundo
Prática 26/10/1996 20:44:15.581

7. DATADIFF() – Encontre a diferença entre duas datas

Esta função retorna o número de dias entre duas datas. 

Sintaxe:

DATEDIFF(intervalodata1 data2);

intervalo - minuto/hora/mês/ano etc.

data1 e data2- expressão de data/hora

Consultar para Encontre a diferença entre duas datas

 SELECT DATEDIFF(day '2017-01-13' '2017-01-03') AS DateDiff;   

Saída: 

Diferença de data

8. DATE_FORMAT() - Data e Hora do Formato

DATE_FORMAT() nos permite formatar um DATA DATAHORA ou TIMESTAMP valor em um formato personalizado usando espaços reservados.

Sintaxe:

DATE_FORMAT(formatodedata);

a data é uma data válida e o formato especifica o formato de saída para data/hora. Os formatos que podem ser usados ​​são:

  • %a-Nome abreviado do dia da semana (Dom-Sábado)
  • %b-Nome abreviado do mês (janeiro a dezembro)
  • %c-mês numérico (0-12)
  • %D-Dia do mês com sufixo inglês (0º 1º 2º 3º)
  • %d-Dia do mês numérico (00-31)
  • %e-Dia do mês numérico (0-31)
  • %f-microssegundos (000000-999999)
  • %H-hora (00-23)
  • %h-hora (01-12)
  • %I-hora (01-12)
  • %i-minutos numéricos (00-59)
  • %j-dia do ano (001-366)
  • %k horas (0-23)
  • %l-hora (1-12)
  • %M-Nome do mês (janeiro a dezembro)
  • %m-mês numérico (00-12)
  • %p-AM ou PM
  • %r-Tempo 12 horas (hh:mm: ss seguido de AM ou PM)
  • %S-Segundos (00-59)
  • %s-Segundos (00-59)
  • %T-Tempo 24 horas (hh:mm:ss)
  • %U-Semana (00-53) onde domingo é o primeiro dia da semana
  • %u-Semana (00-53) onde segunda-feira é o primeiro dia da semana
  • %V-Semana (01-53) onde domingo é o primeiro dia da semana usado com %X
  • %v-Semana (01-53) onde segunda-feira é o primeiro dia da semana usado com %x
  • %W-Nome do dia da semana (domingo a sábado)
  • %w-Dia da semana (0=Domingo 6=Sábado)
  • %X-Ano para a semana em que domingo é o primeiro dia da semana, quatro dígitos usados ​​com %V
  • %x-ano para a semana em que segunda-feira é o primeiro dia da semana, quatro dígitos usados ​​com %v
  • %Y-Ano com quatro dígitos numéricos
  • %y-ano dois dígitos numéricos

Consulta para formatar uma data

 SELECT DATE_FORMAT('2025-04-10 12:34:56' '%W %M %d %Y') AS formatted_date;  

Saída:

Data_formatada
Quinta-feira, 10 de abril de 2025

Melhores práticas para trabalhar com data e hora no MySQL

1. Sempre use formatos de data adequados

Ao inserir ou atualizar datas, certifique-se de seguir os formatos esperados do MySQL ( YYYY-MM-DD YYYY-MM-DD HH:MI:SS ). Isso garante que suas consultas retornem os resultados esperados sem erros.

2. Considerações sobre fuso horário com TIMESTAMP

Enquanto DATETIME não armazena informações de fuso horário TIMESTAMP faz. Se a sua aplicação for sensível ao fuso horário (por exemplo, em aplicações internacionais), considere usar TIMESTAMP para campos de data e hora que precisam levar em conta diferentes fusos horários.

3. Tratamento de intervalos de datas em consultas

Para filtrar dados com base em intervalos de datas (por exemplo, recuperar todos os registros de um mês ou ano específico), certifique-se de usar comparações de datas adequadas no WHERE cláusula. Exemplo:

 SELECT * FROM orders   
WHERE order_date BETWEEN '2025-01-01' AND '2025-01-31';

4. Considerações de desempenho

Ao trabalhar com funções de data e hora, especialmente em grandes conjuntos de dados, esteja atento ao impacto no desempenho. Evite usar funções como NOW() ou CURDATE() no WHERE cláusula, pois podem retardar as consultas ao lidar com tabelas grandes.

Conclusão

Funções de data e hora do MySQL são ferramentas essenciais para manuseio e manipulando dados temporais em seus bancos de dados. Ao dominar funções como NOW() CURDATE() DATE_ADD() DATEDIFF() e DATE_FORMAT() você pode trabalhar facilmente com cálculos baseados em tempo comparações e formatos . A chave para usar essas funções de maneira eficaz é entender sua sintaxe, quando e como usá-las e suas implicações de desempenho em grandes conjuntos de dados. Com esse conhecimento, você será capaz de construir consultas mais eficientes, precisas e escaláveis ​​para todas as suas necessidades relacionadas a data e hora no MySQL.

Criar questionário