Olá pessoal, estou desenvolvendo um aplicativo onde o cadastro de clientes salva a data de nascimento (no formato String dd/MM/aaaa) e em outro campo idade ele pega o valor do campo contendo a data de nascimento e compara com a data atual.
Date hoje = new Date();
Date aniversario;
try {
aniversario = df.parse(con_aniversario.rs.getString("data_nascimento"));
Long idade = (hoje.getTime() - aniversario.getTime()) / (31536000000L);
tfIdade.setText(""+idade);
} catch (ParseException ex) {
ex.printStackTrace();
}
O cliente me pediu para colocar um lembrete de aniversariante quando abrir o sistema. Minha dúvida agora é como realizar essa consulta no banco de dados e como comparar as datas. Pra não ficar parado, só pensando, e sem colocar as idéias no papel, cheguei até o código abaixo, que sei que não vai funcionar, mas a partir daí é que agente vai se batendo até chegar a uma solução plausível.
SimpleDateFormat dfs = new SimpleDateFormat("dd/MM"); // Não sei se esse código será aceito (ainda não compilei, pois no momento não estou na minha máquina de desenvolvimento)
con_aniversario = new ConexaoBD();
con_aniversario.conecta();
String sql_aniversario = "select * from clientes where data_nascimento >= "+dfs.format(dataAtual);
con_aniversario.executeSQL(sql_aniversario);
try {
con_aniversario.rs.first();
mostraAniversariantes();
} catch (Exception e) {
e.printStackTrace();
//JOptionPane.showMessageDialog(null, "");
}
Do modo como está não vai funcionar porque a condição imposta (data_nascimento >= dataAtual) nunca será satisfeita.
Cheguei a pensar na possibilidade de realizar uma consulta antes dessa para armazenar os valores do dia e do mês de cada cliente em variáveis (utilizando os métidos getDay e getMonth) e depois fazer as comparações, mas também estou em dúvida de como fazer isso. Alguém tem uma solução que não seja tão complicada ou alguma forma de aproveitar o que já está sendo desenvolvido?
Agradeço a colaboração de todos.
- depois o problema que você vai ter é o de limpar (normalizar) a tabela.