Retornando dia, mês e ano entre duas datas em mysql/mariadb. Fiz a query mas como diminuir, aperfeiçoar?

08/01/2018

0

Alguém consegue melhorar isso, criei esta query para retornar dia, mês e ano direto do mysql/MariaDb sem precisar programar nada mas achei muito grande apesar de ter ficado bem rápido. Alguém se habilita em melhorar? Grato

SELECT TIMESTAMPDIFF(year,datanasc,NOW()) AS anos,
if(TIMESTAMPDIFF(year,datanasc,NOW())=0,TIMESTAMPDIFF(month,datanasc,now()),TIMESTAMPDIFF(month,datanasc,now())-TIMESTAMPDIFF(year,datanasc,NOW())*12 )as meses,
if(TIMESTAMPDIFF(day,concat(year(curdate()),"-",month(now()),"-",day(datanasc)),NOW())>0,
TIMESTAMPDIFF(day,concat(year(curdate()),"-",month(now()),"-",day(datanasc)),NOW()),
if(TIMESTAMPDIFF(day,concat(year(curdate()),"-",month(ADDDATE(NOW(), INTERVAL -1 MONTH)),"-",day(datanasc)),now())>0,
TIMESTAMPDIFF(day,concat(year(curdate()),"-",month(ADDDATE(NOW(), INTERVAL -1 MONTH)),"-",day(datanasc)),now()),
TIMESTAMPDIFF(day,concat(year(curdate())-1,"-",month(ADDDATE(NOW(), INTERVAL -1 MONTH)),"-",day(datanasc)),now())) ) as dia
from cliente
Luis Miguel

Luis Miguel

Responder

Post mais votado

09/01/2018

Olá Luiz
Isso pode ser escrito em uma function no caso do mysql, no mariadb não conheço. Neste caso se tem os mesmos padrões do mysql deve permitir .

Luiz Vichiatto

Luiz Vichiatto
Responder

Mais Posts

09/01/2018

Luis Miguel

Obrigado luiz, mas o desafio é criar sem procedimentos ou funções.
Responder

10/01/2018

Luiz Vichiatto

Obrigado luiz, mas o desafio é criar sem procedimentos ou funções.

Luiz Miguel
As vezes refatorar uma consulta não exige apenas melhorar um select, é utilizar os recursos que o banco de dados nos oferece, entender esta parte é essencial para um bom funcionamento do conjunto aplicação+banco de dados.
Nem sempre a solução é simples, ou fácil, cada dia aprendemos.
Aprofunde um pouco nos conhecimentos do banco que acredito que você criará uma solução que apresentará uma boa solução para resolver o problema.
Abraços e sucesso....
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar