1
resposta

curiosidade.

códigos diferentes com o mesmo resultado

SELECT NOME, FLOOR(DATEDIFF(CURDATE(), data_de_nascimento) / 365) AS IDADE FROM tabela_de_clientes;

SELECT NOME, TIMESTAMPDIFF (YEAR, DATA_DE_NASCIMENTO, CURDATE()) AS IDADE FROM  tabela_de_clientes;

![](Insira aqui a descrição dessa imagem para ajudar na acessibilidade )

Acredito que entender o código é preciso mais conhecer o banco é fundamental

1 resposta

Bom dia Sérgio! Tudo bem com você?

Você levantou um ponto muito interessante. É normal e até comum ter diferentes maneiras de resolver um problema em códigos de tecnologia, o que vai diferenciar essas soluções são fatores como performance, boas práticas, legibilidade do código, entre outros.

Ambas as queries que você mostrou têm o mesmo objetivo: calcular a idade dos clientes. No entanto, elas usam abordagens ligeiramente diferentes:

  • A primeira query usa DATEDIFF para calcular a diferença em dias entre a data atual e a data de nascimento, divide por 365 e arredonda para baixo com FLOOR. Esta abordagem é um pouco mais "manual".
  • A segunda query usa TIMESTAMPDIFF, que é uma função específica para calcular a diferença entre datas em uma unidade específica (neste caso, YEAR). Esta abordagem é mais direta e possivelmente mais precisa, pois leva em conta anos bissextos.

Em termos de performance, a segunda query é ligeiramente mais eficiente, pois usa uma função otimizada para este cálculo específico. Além disso, ela é mais legível e direta em sua intenção. Mas, não se preocupe, entender essas nuances vem com a prática e o estudo contínuo. Continue explorando diferentes formas de resolver problemas - isso expandirá seu repertório e o ajudará a escolher a melhor solução para cada situação. Para se aprofundar mais nessas funções, recomendo algumas leituras:

Nota: O material recomendado está em inglês. Utilize o tradutor caso necessário.

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!