Realizar uma consulta no banco de dados e subtrair a data de registro da data atual do sistema

6 respostas
R

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!

6 Respostas

julianolandim

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:

R

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!

R

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!

julianolandim
ola, o que vc pode fazer é usar o seguinte metodo
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());
    }
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:
R

BLZ, e tem como eu setar esse resultado (resultado da subtração) no jtextfield?

R

é 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:

public  List<ListClienteBean> listarListClientes(String nome){
       List<ListClienteBean> 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;
       
   }

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?

Criado 14 de setembro de 2011
Ultima resposta 18 de set. de 2011
Respostas 6
Participantes 2