Boa Tarde Galera!
Estou fazendo um trabalho para a faculdade e me deparei com um problema. Tenho um método que deve receber como paramento duas datas (DataInicial e DataFinal).
public static ArrayList<Compras> retriaveByData(Date dataInicial, Date dataFinal) throws SQLException{
if (dataInicial == null || dataFinal == null){
System.out.println("Digite as datas corretamente!");
}
System.out.println("Datas " + dataInicial + " " + dataFinal);
ArrayList<Compras> aux = new ArrayList<>();
Connection conn = BancoDados.createConnection();
PreparedStatement stm = conn.prepareStatement("select * from compras where datas between ? and ? ");
stm.setDate(1, dataInicial);
stm.setDate(2, dataFinal);
ResultSet rs = stm.getResultSet();
while (rs.next()){
Compras c = new Compras(rs.getInt("pk_compra"),
rs.getInt("fk_funcionario"),
rs.getInt("numero"),
rs.getDate("datas"));
aux.add(c);
}
return aux;
}
Porém não estou conseguindo mandar as datas elas saem totalmente diferente do que eu passo. Como por exemplo:
Date date = new Date(2017, 10, 1);
System.out.println(date);
Digitei o código acima para testar oque esta sendo enviado para o método e a saída foi: 3917-11-01.
Como devo enviar as datas para o método? Estou utilizado o date.sql.