2
respostas

DATEDIFF versus TIMESTAMPDIFF

Logo na proposta do exercício me veio na cabeça uma forma de tentar trazer o cálculo das idades utilizando o DATEDIFF:

select NOME, DATEDIFF(CURDATE(),(DATA_DE_NASCIMENTO)) AS IDADE from tabela_de_clientes ORDER BY IDADE;

se eu coloco YEAR como em TIMESTAMPDIFF ele retorna erro, consegui trazer em anos da mesma forma que a resolução do exercício, somente em dias. Gostaria de entender o porque e qual a diferença principal estre os dois quando for necessário cálculos em cima de datas. É possível obter os mesmos cálculos com ambos? Em quais casos um é mais recomendado que o outro?

2 respostas

Oii, Roberto! Tudo bem?

A DATEDIFF calcula a diferença em dias entre duas datas, não considerando hora e o minuto e sempre retornando um valor inteiro. A função não permite especificar a unidade de medida de tempo, e é por isso que você recebeu um erro ao tentar usar YEAR com DATEDIFF. Ela é útil para calcular diferença entre datas em dias, duração de eventos e cálculos simples de datas.

A TIMESTAMPDIFF é mais flexível, pois permite calcular entre duas datas em diferentes unidades de tempo (anos, meses, semanas, dias e dentre outros). Ela considera hora e minuto, retornando valores fracionários.

Então, use DATEDIFF quando precisar da diferença em dias. Use TIMESTAMPDIFF quando precisar da diferença em outra unidade de tempo (como anos, meses ou horas). Ambas as funções podem ser usadas para cálculos com datas, mas TIMESTAMPDIFF oferece maior flexibilidade para especificar a unidade de tempo desejada.

Espero ter esclarecido melhor sobre as funções. Continue se dedicando aos estudos e qualquer dúvida, conte conosco.

Bons estudos, Roberto!

Eii Nathalia, deu pra entender direitinho, deixou bem claro a especificação dos dois. Muito obrigadooo!