Pegar data do Banco de Dados por filtro

6 respostas
R

Boa tarde galera, tudo certo?? Bem, na minha aplicação estou fazendo um filtro dos aniversariantes de cada mês. Porém, quero desconsiderar o ANO no filtro e não estou conseguindo…Abaixo o xhtml:

<td align="right">Aniversário:</td>
                                <h:panelGrid columns="2" width="300">
                                    <p:selectOneMenu id="dtaNascimento" converter="sec" value="#{matriculaJsfBean.mes}" filter="true" caseSensitive="false" filterMatchMode="contains">
                                        <f:selectItem itemLabel="Selecione" itemValue=""/>
                                        <f:selectItem itemLabel="Janeiro" itemValue="Janeiro"/>
                                        <f:selectItem itemLabel="Fevereiro" itemValue="Fevereiro"/>
                                        <f:selectItem itemLabel="Março" itemValue="Marco"/>
                                        <f:selectItem itemLabel="Abril" itemValue="Abril"/>
                                        <f:selectItem itemLabel="Maio" itemValue="Maio"/>
                                        <f:selectItem itemLabel="Junho" itemValue="Junho"/>
                                        <f:selectItem itemLabel="Julho" itemValue="Julho"/>
                                        <f:selectItem itemLabel="Agosto" itemValue="Agosto"/>
                                        <f:selectItem itemLabel="Setembro" itemValue="Setembro"/>
                                        <f:selectItem itemLabel="Outubro" itemValue="Outubro"/>
                                        <f:selectItem itemLabel="Novembro" itemValue="Novembro"/>
                                        <f:selectItem itemLabel="Dezembro" itemValue="Dezembro"/>
                                    </p:selectOneMenu>
                                </h:panelGrid>

No meu Bean:

private String mes = "";
    private Date dataInicial;
    private Date dataFinal;

private Map<String, Object> montaParametros() {
        Map<String, Object> p = new HashMap<String, Object>();

 if (mes.equals("Novembro")) {          // Utilizei esse mes pois tenho alguns registros no banco dele...
            dataInicial = DateUtil.newDate("01/11/1973 00:00:00"); 
            dataFinal = DateUtil.newDate("30/11/1973 00:00:00");
        }
 return p;
    }

Se alguém puder ajudar e dar uma idéia de como posso fazer para desconsiderar o ano nesse filtro… Agradeceria mto… Vlw…

6 Respostas

R

Olá Ricardo,
A dúvida que já tive nestes casos seria o tipo de filtro a se utilizar, tendo em vista a forma utilizada para fazer a consulta ao banco.
Para facilitar você pode utilizar somente o mês como filtro(sem dataInicial e dataFinal) por exemplo…

Utiliza Hibernate ou JDBC?

R

rjbn_:
Olá Ricardo,
A dúvida que já tive nestes casos seria o tipo de filtro a se utilizar, tendo em vista a forma utilizada para fazer a consulta ao banco.
Para facilitar você pode utilizar somente o mês como filtro(sem dataInicial e dataFinal) por exemplo…

Utiliza Hibernate ou JDBC?

Olá rjbn_…
Bem, desse jeito está funcionando , porém não estou conseguindo passar SOMENTE O DIA E O MES… No meu DateUtil tenho o seguinte:

public static Date newDate(String data) {
        try {
            return new SimpleDateFormat("dd/MM/yyyy").parse(data);
        } catch (ParseException ex) {
            throw new RuntimeException("Erro ao criar a data.", ex);
        }
    }

    public static String dataHoraFormatada(Date d) {
        return new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(d);
    }

    public static String dataFormatada(Date d) {
        return new SimpleDateFormat("dd/MM/yyyy").format(d);
    }

Tentei passar sem o yyyy mas não estou conseguindoo… Uso as duas coisas que vc pediu…Alguma ideia de como posso “desconsiderar” o ANO ?? Vlw por estar ajudando…Abc…

R

Mais alguém poderia ajudar aí??? Se mais alguém puder dar uma mão… agradeço mto… Vlw

R

Então, perguntei a forma que você está acessando o banco porque estava pensando algo parecido com:
SELECT p FROM people p WHERE DATEPART(MM, p.birthDay) = yourMounthFilter

Retornando todas as pessoas que tem o mês em questão cadastrado como data de nascimento.

R

rjbn_:
Então, perguntei a forma que você está acessando o banco porque estava pensando algo parecido com:
SELECT p FROM people p WHERE DATEPART(MM, p.birthDay) = yourMounthFilter

Retornando todas as pessoas que tem o mês em questão cadastrado como data de nascimento.


Bom dia. Bem, estou fazendo uma lista de alunos e aprtir dela pego a dta de nascimento…Abaixo como estou tentando fazer agg:

public void teste() {

ArrayList<Matricula> matriculaAlunos = new ArrayList();
        matriculaAlunos = (ArrayList<Matricula>) crudService.findAll(Matricula.class);
        int mesAtual = 10;

        for (Iterator<Matricula> it = matriculaAlunos.iterator(); it.hasNext();) {
            Matricula matricula = it.next();
            
        
            Calendar calAniver = new GregorianCalendar();
            calAniver.setTime(matricula.getAluno().getDataNascimento());
            if (calAniver.get(Calendar.MONTH) == mesAtual) {
                System.err.println(calAniver.getTime());
            }
        }
    }

E chamo o método no meu setup…Porém, por enquanto não estou tendo mtoo sucesso pra exibir…Se puder ajudar agradeço…
Obs( a lista de matricula é em Lazy e não estou conseguindo passar no Iterator…)
VocÊ e/ou alguém mais poderiam dar uma ajuda aí???
Se puder ajudar…agradeceria mto…Vlw…

R

Estou tentando passar a lsita em LazyDataModel dessa maneira:

matriculaList = (LazyDataModel<Matricula>) crudService.findAll(Matricula.class);
        int mesAtual = 10;

        for (Iterator<Matricula> it = matriculaList.iterator(); it.hasNext();) {
            Matricula matricula = it.next();

Porém, está dando o seguinte erro:

java.lang.ClassCastException: java.util.Vector cannot be cast to org.primefaces.model.LazyDataModel

Alguém poderia dar uma ajuda aí??? Vlw…

Criado 16 de maio de 2013
Ultima resposta 17 de mai. de 2013
Respostas 6
Participantes 2