Filtro por datas a partir de JTextfield

Estou com dificuldade a filtrar por essas datas

preencherTabela("SELECT * FROM `tbl_entrada` INNER JOIN tbl_tipo_documento ON tbl_entrada.FKTipodeDocumento = tbl_tipo_documento.PK_TipoDoc WHERE DatadeRecepcao BETWEEN " +jTextFieldPData.getText()+  "AND" +jTextFieldSData.getText());

Seria interessante indicar qual a dificuldade ou o alerta exibido, pois fica difícil ajudar, baseado em suposições. No entanto, devo preveni-lo que os SGBDs geralmente utilizam o sistema ISO 8601 de datas, ou seja yyyy-MM-dd (year-month-day). Se você estiver passando o padrão dd/mm/aaaa, não irá funcionar. Primeiro nos esclareça qual padrão está utilizando.

O mesmo que do Banco.
try{ javax.swing.text.MaskFormatter data = new javax.swing.text.MaskFormatter ("####-##-##");
jTextFieldSData = new javax.swing.JFormattedTextField(data); } catch (Exception e) { }

Certo, as datas devem ser expressas entre aspas simples. Tente assim:

String strSQLPesquisa "SELECT * FROM tbl_entrada " 
	+ "INNER JOIN tbl_tipo_documento " 
	+ "ON tbl_entrada.FKTipodeDocumento = tbl_tipo_documento.PK_TipoDoc "
	+ "WHERE DatadeRecepcao BETWEEN '" + jTextFieldPData.getText() + "' "
	+ "AND '" + jTextFieldSData.getText() + "'";

preencherTabela(strSQLPesquisa);

Obs.: eu separei porque não gosto te passar String gigante para métodos.

2 curtidas

Não concatene parâmetros na String da query.
Ao invés disso, utilize PreparedStatement e passe os parâmetros com o tipo de dado adequado, no caso java.sql.Date.

2 curtidas

Mágico, eram mesmo as aspas simples, muito obrigado Iohannes