Fórum Retornando dia, mês e ano entre duas datas em mysql/mariadb. Fiz a query mas como diminuir, aperfeiçoar? #590374
08/01/2018
0
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
Curtir tópico
+ 0Post mais votado
09/01/2018
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
Gostei + 1
Mais Posts
09/01/2018
Luis Miguel
Gostei + 0
10/01/2018
Luiz Vichiatto
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....
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)