[Resolvido] Converter valor para pesquisa

6 respostas
CarlosFontana

Boa noite pessoal, estou tentando fazer uma pesquisa por meio de uma condição (um filtro), da seguinte forma:

public static final String SELECIONAMES = "SELECT * FROM COMPRA WHERE COMPDATA BETWEEN ? AND CURRENT_DATE";

public Vector pegaDadosHistoricoMes(int criterioPesquisa) {
        try {
            Date data = new Date();
            Calendar dataPesquisa = Calendar.getInstance();
            dataPesquisa.setTime(data);
            dataPesquisa.add(Calendar.MONTH, (1 - criterioPesquisa));
            dataPesquisa.set(Calendar.DAY_OF_MONTH, 1);
            PreparedStatement ps;
            if (criterioPesquisa == 0) {
                ps = BancoDados.getConexao().prepareStatement(SELECIONATODOS);
            } else {
                ps = BancoDados.getConexao().prepareStatement(SELECIONAMES);
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                ps.setString(1, sdf.format(dataPesquisa)); // Erro nesta linha
            }
            ...

java.lang.IllegalArgumentException: Cannot format given Object as a Date
at java.text.DateFormat.format(DateFormat.java:281)
at java.text.Format.format(Format.java:140)
at Movimentos.Persistencia.PersistenciaCompra.pegaDadosHistoricoMes(PersistenciaCompra.java:320)

Tentei converter de outras formas mas não deu certo, se alguém souber e puder me ajudar, desde já agradeço!

6 Respostas

Y

Pelo que eu entendi voce quer listar todas as compras que estiverem entre o periodo escolhido até o atual certo?
Acho que se voce deixasse uma view pronta no seu BD ia ficar mais facil pra puxar esses dados .
Porque na view voce ja iria montar a estrutura para filtrar até até a data atual.
:slight_smile:

charleston10

Olha da uma olhada nesse post desse blog

Na verdade tive problema e conversao e “desconverter” data de banco de dados.
Fiz o seguinte, criei um classe que resolvesse esse problema, crio um objeto ele vai la - pega a data do campo - converte gravo no bd e ja era…
pego a data do bd - vai la converte - e mostra no campo… sem problemas, e sem dores de cabeça…

;]

CarlosFontana

Exatamente isso yurisisbell!
Obrigado pelo link charleston10, vou verificar!

Obrigado a todos!

pmlm

Não convertas para String. Deixa ir como data que o BD se desenrasca com ela.

} else {
    ps = BancoDados.getConexao().prepareStatement(SELECIONAMES);
    ps.setDate(1, new java.sql.Date(dataPesquisa.getTime().getTime()));
}
CarlosFontana

Que coisa, estava tentando implementar com o java.sql.Date e não havia conseguido, agora deu certo pmlm!

Muito obrigado!

CarlosFontana

!

Criado 29 de agosto de 2012
Ultima resposta 30 de ago. de 2012
Respostas 6
Participantes 4