logo

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 aDATETIMEmasTIMESTAMPtambé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 :YYYYouYY
  • 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' title=

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: 

comandos linux que
SAÍDA2' loading='lazy' title=

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' loading='lazy' title=

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

ODATE()função extrai apenas a parte da data de umDATETIMEouTIMESTAMPvalor descartando o tempo.

Exemplo: Para uma mesa chamada users :

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

Consulta:

SELECT Name DATE(BirthTime)   
AS BirthDate FROM Test;

Saída:

inserção python
Nome Data de Nascimento
Prática26/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ática26

Consulta para Extrair Ano:

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

Saída: 

Nome Ano de Nascimento
Prática1996

Consulta para extrair segundos:

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

Saída:

Nome NascimentoSegundo
Prática581

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 ouDATETIMEvalor.

Sintaxe:

DATE_ADD(tipo de data INTERVAL expr);

Exemplo: Para a tabela abaixo chamada ' Teste '

Eu ia Nome Hora de Nascimento
4120Prática26/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ática26/09/1997 16:44:15.581

Consulta para adicionar 30 dias a uma data

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

Saída:

Nome AniversárioModificado
Prática26/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ática26/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.

string de substituição java

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

EnquantoDATETIMEnão armazena informações de fuso horárioTIMESTAMPfaz. Se a sua aplicação for sensível ao fuso horário (por exemplo, em aplicações internacionais), considere usarTIMESTAMPpara 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 noWHEREclá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 comoNOW()ouCURDATE()noWHEREclá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 comoNOW() CURDATE() DATE_ADD() DATEDIFF()eDATE_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