Faz algum tem que precisei exibir a idade dos aniversariantes do mês em uma consulta.
De certa maneira demorei um pouco ate chegar a esse objetivo, obviamente não sei se essa é a melhor maneira mas está funcionando.
Criei um campo na tabela de cliente preenchido por Default com a palavra “anos” e fiz o seguinte select dentro do “Lookup de Consulta”
“Comando Select” de um campo previamente criado na aplicação chamado “idade”.
SELECT
YEAR(CURRENT_DATE) - YEAR(data_nascimento_cliente) - (DATE_FORMAT(CURRENT_DATE, '%m%d') < DATE_FORMAT(data_nascimento_cliente, '%m%d'))AS idade, anos
FROM
`tabela_cadastro_clientes`
WHERE
id_cliente ='{id_cliente}'
Nesse caso a tabela cliente não era muito grande, então esse campo anos preenchido automaticamente não impactou em nada.
================================
Em outra grid precisei exibir anos e meses de vida.
Aqui fiz diferente criei uma tabela no banco de dados com 3 campos: id_config, anos, meses (na verdade a tabela já existia para algumas outras configurações do sistema) mas para facilitar o exemplo populei com os seguintes dados:
id_config=1
anos = anos e
meses = meses
Do mesmo modo foi criando um campo na aplicação para exibir a idade onde fiz o seguinte select dentro do “Lookup de Consulta”
“Comando Select”.
SELECT
YEAR(CURRENT_DATE) - YEAR(tabela_cadastro_clientes.data_nascimento_cliente) - (DATE_FORMAT(CURRENT_DATE, '%m%d')
< DATE_FORMAT(tabela_cadastro_clientes.data_nascimento_cliente, '%m%d'))AS idade, tabela_config_idade.anos,
TIMESTAMPDIFF(MONTH, tabela_cadastro_clientes.data_nascimento_cliente + INTERVAL
TIMESTAMPDIFF(YEAR, tabela_cadastro_clientes.data_nascimento_cliente, CURRENT_DATE) YEAR , CURRENT_DATE)AS meses, tabela_config_idade.meses
FROM
tabela_cadastro_clientes,
tabela_config_idade
WHERE
tabela_cadastro_clientes.id_cliente = '{id_cliente}' AND tabela_config_idade.id_idade=1
Na imagem anexa mostro o resultado dos campos de exibição da idade ainda com a formatação original do Scriptcase.
BOM; Se você tiver uma maneira melhor para fazer deixe sua sugestão, espero estar ajudando alguém.
É certo que a forma que descrevi acima funcionou legal, mas no primeiro caso tive que adicionar um campo na tabela de cadastro de clientes e na segunda tive que criar uma tabela adicional, pensando em uma solução melhor vi que nada do que foi feito seria necessário para o mesmo resultado.
Veja nas imagens abaixo a correção simplificada.
– “destaque em vermelho e amarelo para as informações adicionadas” –