Consultas pela data

5 respostas
C

Bom dia, me ajudem

quero fazer uma consulta no banco pela data:
[code]
String data_inicial = JOptionPane.showInputDialog(null,"Digite a data Inicial"); // captura data inicial
String data_final = JOptionPane.showInputDialog(null,"Digite a data Final"); // captura data final

//mais quando jogo na query não busca

con.executeSQL("Select * From movimento Where data_movimento Between (O QUE COLOCO AQUI??");

//eu já olhei no fórum antes de postar e não vi nada parecido,

//quem puder me ajudar ,

5 Respostas

felipealbuquerque

Converta as datas inicial e final para o formato yyyy-MM-dd e faça o seguinte:

con.executeSQL("Select * From movimento Where data_movimento Between {d 'data inicial'} and {d 'data final'}");

Aconselho a utilização de um DateFormat para converter e de um PreparedStatement para passar as datas inicial e final para a consulta (se você estiver utilizando JDBC puro).
A parte do {d ‘data em yyyy-Mm-dd’} é um código de escape do JDBC. Ele pega a data passada como parâmetro e converte para o formato específico do SGBD que você está utilizando. Assim você não precisa se preocupar em ficar alterando o código caso mude de SGBD, pelo menos nesse caso.

C

Oi, obrigado pela preocupação em me ajudar
pelo que entendi eu fiz assim mais não funcionou, o meu campo data_movimento no mysql é do tipo string

String data_inicial = JOptionPane.showInputDialog(null,"Digite a data Inicial");
   String data_final = JOptionPane.showInputDialog(null,"Digite a data Final");
   
SimpleDateFormat data_inicial_formatada = new SimpleDateFormat(data_inicial);   

SimpleDateFormat data_final_formatada= new SimpleDateFormat(data_final);   

n.executeSQL("Select * From movimento Where data_movimento Between {d 'data_inicial_formatada'} and {d 'data_final_formatada'}");
felipealbuquerque

É melhor guardar uma data no formato de data mesmo…
Mas, seguindo o seu cenário atual você pode fazer da seguinte maneira:

String sql = "Select * From movimento Where data_movimento Between ''{0}'' and ''{1}''";
sql = MessageFormat.format(sql, new Object[] {dataInicial, dataFinal});
n.executeSQL(sql);

Utilizando o java.text.MessageFormat você evita ficar concatenando Strings e fica com o código bem mais limpo. Nesse caso, não precisa formatar a data, ao menos que você deseje guardar a data em um formato específico.

Dê uma pesquisada também em como utilizar o SimpleDateFormat, tem alguns tópicos aqui no GUJ.

Espero tê-lo ajudado!

C

Caramba como vc me ajudou funcionou perfeitamente, muito obrigado mesmo, irei seguir os teus conselhos quanto a formatação
considero a minha dúvida RESOLVIDA
Que Deus continue te dando sabedoria a cada dia
um grande abraço

C

Oi Felipe, estou tentando seguir o teu conselho em guardar a data no banco no formato date, porém tive que postar um outro tópico sobre isto , gostaria muito que vc me ajudasse

Criado 29 de abril de 2008
Ultima resposta 2 de mai. de 2008
Respostas 5
Participantes 2