Boa noite pessoal, peço desculpas se estiver postando no lugar errado, também fiz uma busca e não achei em lugar nenhum a resposta!
a questão é a seguinte, preciso criar uma consulta que pegue a data de um registro no banco de dados mysql, depois compare com a data atual do sistema e faça uma subtração, porém não sei por onde começar, peço desculpas pois sou superiniciante em java! e também se estiver postando no lugar errado!
Boa noite, eu acho que eh isso que você precisa
// retorna o intervalo de dias entre duas datas
// passar as datas no formato brasil
// ex: contaDias("15/09/2011","20/09/2011")
public String contaDias(String dataInicialBR, String dataFinalBR) throws ParseException {
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
df.setLenient(false);
Date dataInicio = df.parse(dataInicialBR);
Date dataFim = df.parse(dataFinalBR);
long dt = (dataFim.getTime() - dataInicio.getTime()) + 3600000;
Long diasCorridosAnoLong = (dt / 86400000L);
Integer diasDecorridosInt = Integer.valueOf(diasCorridosAnoLong.toString());
String diasDecorridos = String.valueOf(diasDecorridosInt); //Sem numeros formatados;
return diasDecorridos;
}
espero ter ajudado
:thumbup:
O Juliano Vlw pela atenção cara, seguinte, deixa eu explicar melhor:
como eu to aprendendo pra exercitar eu to fazendo um sistema de cadstro para o serviço da minha esposa já que eles usan excel lá… rsrsrsrs! no banco eu tenho um campo data_emprestimo, eu queria colocar um botão no jFrame e um metodo assim: toda vez que clicar no botão, ele faz uma busca no banco por datsa de registro com diferença de 14 meses da data atual, depois e me retorne os registros pode ser em uma jtable mesmo!
Boa noite, acho que consegui simplificar o problema!
No jframe clientes, criei 2 jtextfields, tfDatahoje, e tfDeprestimo, no tfDatahoje coloque o seguinte codigo nas propriedades do jtextfield:
GregorianCalendar data = new GregorianCalendar(TimeZone.getTimeZone("GMT-3"),new Locale("pt_BR"));
Date d = data.getTime();
String dt[] = {String.valueOf(d.getDate()), String.valueOf((d.getMonth() + 1)), String.valueOf((d.getYear() + 1900))};
if (Integer.parseInt(dt[0]) < 10) {
dt[0] = "0" + dt[0];
}
if (Integer.parseInt(dt[1]) < 10) {
dt[1] = "0" + dt[1];
}
tfDataHoje.setText(dt[0] + dt[1] + dt[2]);
assim sempre que eu abro o form clientes este campo de texto já fica com a data atual do sistema, agora a minha ideia é a seguinte, sera que existe alguma maneira de pegar esta data, diminuir 14 meses e setar o resultado no jtextfield “tfDemprestimo”, porque ai eu criaria um select procurando no banco pela data do resultado da subtração!
ola, o que vc pode fazer é usar o seguinte metodo
[code]
public String somaData(String dataEn, int somaDias) throws ParseException {
String dataVerificada = formataDataExibeMesa(dataEn);
int dia = Integer.parseInt(dataVerificada.substring(0, 2));
int mes = Integer.parseInt(dataVerificada.substring(3, 5));
int ano = Integer.parseInt(dataVerificada.substring(6, 10));
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Calendar calendar = new GregorianCalendar(ano, mes, dia);
Date dt = new Date();
try
{
dt = sdf.parse(dataVerificada);
calendar.setTime(dt);
calendar.add(calendar.DATE, somaDias);
}
catch(ParseException e)
{
System.out.println(e.getMessage());
}
return sdf.format(calendar.getTime());
}
[/code]
para usar vc faz o seguinte,no primeiro parâmetro passe a data no formato AAAA-MM-DD e no segundo parâmetro passe o numero de dias que você quer subtrair, passe um numero negativo para subtrair caso contrario ele ira somar
// te retorna a data de 10 dias atras
Stirng data10DiasAtras = somaData("2011-09-18", -10)
depois disso você passa essa data na sua query do sql
select * from suaTablela where dataEmprestimo <= dataDeHoje and dataEmprestimo >= data10DiasAtras
:thumbup:
BLZ, e tem como eu setar esse resultado (resultado da subtração) no jtextfield?
é pq assim, eu tenho a classe “ListClientes” depois tenho o pacote “listclientes” onde tem as classes: ListClienteBean (onde tem os get, e set), a ListClienteControl (onde tem os metodos de select, update, insert) então por exemplo a pesquisa de clientes na classe “ListClienteControl” fica assim:
"String consultaListCliente = "SELECT * FROM CLIENTES WHERE NOME LIKE ?";"
o metodo em “ListClienteControl” fica assim:
[code] public List listarListClientes(String nome){
List listclientes = new ArrayList();
try{
AcessoMySql bd = new AcessoMySql();
pstm = bd.conectar().prepareStatement(consultaListCliente);
pstm.setString(1, nome);// SELECT * FROM CLIENTES WHERE NOME LIKE Rafael
rs = pstm.executeQuery();
ListClienteBean cli;
while (rs.next()){
cli = new ListClienteBean();
cli.setCodigo(rs.getInt("codigo"));
cli.setNome(rs.getString("nome"));
cli.setEndereco(rs.getString("endereco"));
cli.setBairro(rs.getString("bairro"));
cli.setCep(rs.getString("cep"));
cli.setData_emprestimo(rs.getString("data_emprestimo"));
cli.setData_nascimento(rs.getString("data_nascimento"));
cli.setNumbeneficio(rs.getString("numbeneficio"));
cli.setTelefone(rs.getString("telefone"));
cli.setCidade(rs.getString("cidade"));
cli.setCpf(rs.getString("cpf"));
cli.setTipobeneficio(rs.getString("tipobeneficio"));
cli.setUF(rs.getString("UF"));
cli.setSalario(rs.getString("salario"));
cli.setCpf(rs.getString("cpf"));
cli.setRg(rs.getString("rg"));
cli.setNum(rs.getString("num"));
listclientes.add(cli);
}
bd.desconectar();
}
catch(Exception e){
e.printStackTrace();
}
return listclientes;
}[/code]
depois na classe ListClientes que é o form fica assim:
protected void listarClientes(){
ListClienteControl cli = new ListClienteControl();
listclientes = cli.listarListClientes("%" + tfPesquisa.getText().trim() + "%");
mostrarClientes(listclientes);
}
então como eu usaria o seu metodo no meu caso?