Como fazer pesquisa em mysql com campo date

11 respostas
marcusluiz83

Boa tarde!

Como faço para fazer uma consulta de data em mysql da seguinte forma:

Tenho este jformattedtextfield, que formata a data tipo “14/10/2010”:

ftfPeriodoInicial = new javax.swing.JFormattedTextField();
try{
javax.swing.text.MaskFormatter data= new javax.swing.text.MaskFormatter("##/##/####"); 
ftfPeriodoInicial = new javax.swing.JFormattedTextField(data); 
} 
catch (Exception e){ 
}

No mysql, o campo “data” está com o formato “DATE”, ou seja “2010-10-14”. Como faço para realizar consultas com estes dois formatos diferentes?

Já havia perguntado isto em outro tópico, mas entenderam que eu queria armazenar data neste banco. Eu quero apenas consultar as datas.

Meu código de busca:

private void pesquisaData() throws SQLException {
        AnaliseVendedorDao dao = new AnaliseVendedorDao();
        vendedor = dao.getListaByData("%" + ftfPeriodoInicial.getText() + "%");
        mostraPesquisa(vendedor);
    }

Agradeço pela ajuda!

11 Respostas

lucas_carvalho100

Poste o código deste método dao.getListaByData()

marcusluiz83
public List<Anavend> getListaByData(String data) throws SQLException {
        String sql = "select * from anavend where data like ?";
        java.sql.PreparedStatement stmt = this.conexao.prepareStatement(sql);
        stmt.setString(1, data);
        ResultSet rs = stmt.executeQuery();
        List<Anavend> listaByData = new ArrayList<Anavend>();

        while (rs.next()) {
            Anavend vend = new Anavend();
            vend.setData(rs.getString("data"));
            vend.setVendedor(rs.getString("vend"));
            vend.setLoja(rs.getString("loja"));
            vend.setValor(Double.parseDouble(rs.getString("valorVendido")));
            listaByData.add(vend);
        }
        rs.close();
        stmt.close();
        return listaByData;
    }
lucas_carvalho100
public List<Anavend> getListaByData(Date data) throws SQLException {
        String sql = " select * from anavend where data BETWEEN ? AND ?";
        java.sql.PreparedStatement stmt = this.conexao.prepareStatement(sql);
        stmt.setDate(1, data);
        stmt.setDate(2, data);
        ResultSet rs = stmt.executeQuery();
        List<Anavend> listaByData = new ArrayList<Anavend>();

        while (rs.next()) {
            Anavend vend = new Anavend();
            vend.setData(rs.getString("data"));
            vend.setVendedor(rs.getString("vend"));
            vend.setLoja(rs.getString("loja"));
            vend.setValor(Double.parseDouble(rs.getString("valorVendido")));
            listaByData.add(vend);
        }
        rs.close();
        stmt.close();
        return listaByData;
    }

Assim deve dar pra vc ter uma ideia...

marcusluiz83

Amigão, tô entendendo sua explicação. Esbarrei no seguinte erro após fazer a alteração sugerida:

method getListaByData in class dao.AnaliseVendedorDao cannot be applied to given types
  required: java.util.Date
  found: java.lang.String

Como devo corrigir?

private void pesquisaData() throws SQLException {
        AnaliseVendedorDao dao = new AnaliseVendedorDao();
        vendedor = dao.getListaByData("%" + ftfPeriodoInicial.getText() + "%"); // O erro está aqui
        mostraPesquisa(vendedor);
    }

Obrigado!

lucas_carvalho100

Tenta assim …

Date data;
data = Date.valueOf(ftfPeriodoInicial.getText());
vendedor = dao.getListaByData(data);
marcusluiz83

cannot find symbol symbol: method valueOf(java.lang.String) location: class java.util.Date
:frowning: :frowning: :shock:

lucas_carvalho100

Use isso

SimpleDateFormat out = new SimpleDateFormat("dd/MM/yyyy");
marcusluiz83

Não entendi. Este código no jformattedtextfield ou no método de pesquisa?

lucas_carvalho100

Sim pode ser la dentro do método…

// cria o formatador  
SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy");  
Date data = formatador.parse(Aqui seu campo ou variavel string);
marcusluiz83

Quase lá. Consegui executar o programa, mas retornou o erro ao realizar a pesquisa:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date

Será que tem jeito?

lucas_carvalho100

Mude a dependência

java.sql.Date  para  java.util.Date
Criado 14 de outubro de 2010
Ultima resposta 14 de out. de 2010
Respostas 11
Participantes 2