Select entre 2 datas no Mysql

6 respostas
S

Bom dia pessoal,
estou querendo fazer um select entre duas data, porém ando meio perdido.

Vou mostrar o que eu tentei fazer:

1) Pensei em fazer 1 select de todos os dados e filtrá-los na jsp com , porém o formato que a data vem do banco não deixa eu fazer comparações.
*Omiti algumas tags html.

Jsp que manda as datas

<body>
        <form action="Ex11.jsp">
            Data inicial: <input type="text" name="dataInicial"><br>
            Data final: <input type="text" name="dataFinal"><br>
            <input type="submit" value="Cadastrar">
        </form>
    </body>

Jsp que recebe essas datas, porém não consigo usar o por incompatibilidade de valores

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<jsp:useBean id="dao" class="dao.RegistroDao"/>
<body>    
        <table border="2">
            <tr>
                <td>Nome</td>
                <td>Idade</td>
                <td>Nota</td>
                <td>Data</td>
             </tr>
  
             <c:forEach var="aluno" items="${dao.listaAlunos}">
                 
              <tr>
                  <td>${aluno.nome}</td>
                  <td>${aluno.idade}</td>
                  <td>${aluno.nota}</td>
                  <td><fmt:formatDate value="${aluno.data.time}" pattern="dd/MM/yyyy" /></td>
              
              </tr>
                 
             </c:forEach>
        </table>

O dao

public List<Aluno> getListaAlunos() throws SQLException {


        try {
            List<Aluno> alunos = new ArrayList<Aluno>();
            PreparedStatement stmt = this.connection.prepareStatement("select * from alunos");
            ResultSet rs = stmt.executeQuery();
            

            while (rs.next()) {
                Aluno aluno = new Aluno();
                aluno.setNome(rs.getString("aluno"));
                aluno.setIdade(rs.getInt("idade"));
                aluno.setNota(rs.getFloat("nota"));
                Calendar data = Calendar.getInstance();
                data.setTime(rs.getDate("data"));
                aluno.setData(data);

                alunos.add(aluno);
            }

            rs.close();
            stmt.close();
            return alunos;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
2) Pensei em usar a cláusula:
PreparedStatement stmt = this.connection.prepareStatement("select * from alunos where data between dataInicial and dataFinal ");

O problema agora é:

a) Como eu mandaria a data da minha jsp para cá?

b)O formato do mysql é: yyyy/mm/dd e o formato que a pessoa digita na jsp é: dd/mm/yyyy.
Não teria como eu enviar a data pro banco no formato dd/mm/yyyy ?

Bem, é isso.

Obrigado

6 Respostas

nel

Bom dia!

Para pegar os valores da sua página você tem um Servlet, certo?
Pegue pelo request via “id” do campo o valor.

Sobre o formato da data, creio que depende de como está no seu banco.
Para tal, basta formatar adequadamente.

Use o SimpleDateFormat, é bem simples.
Abraços.

S

Não teria como fazer essa listagem sem ter que usar uma servlet?

nel

Bom! Ai me vem a cabeça Java Sever Faces?
Acho bem mais prático e fácil. Mas esse é o meu ponto de vista.

Conheces? Senão conheces, está aqui!
Depois estude a versão mais atual, 2.0.

Abraços!

S

Certo, eu ainda não sei jsf, por isso queria saber como resolvo esse problema aí.

jorginhoskater

Bom dia,

Você pode criar um java.sql.Date apartir de um java.util.Date e utilizar o mesmo na sua query quando for fazer as consultas, segue um exemplo abaixo:

Locale l = new Locale("pt","br");
		SimpleDateFormat dateFormat = new SimpleDateFormat("dd/mm/yyyy",l);
		Calendar calendar = Calendar.getInstance();
		java.util.Date date = calendar.getTime();
		
		System.out.println(dateFormat.format(date));
		java.sql.Date d1 = new java.sql.Date(date.getTime());
		
// o formato fica da forma que você necessita para 
		System.out.println(d1);
S

acho que eu compliquei minha dúvida… vou tentar postar outro tópico la na área de persistência.

Valeu aos que tentaram em ajudar =**

Criado 28 de março de 2011
Ultima resposta 30 de mar. de 2011
Respostas 6
Participantes 3