[resolvido]Busca com TIMESTAMP no Postgres + JPA

4 respostas
vitordaumling

Boa noite pesssoal,

tenho um atributo TIMESTAMP para horário de atendimento, porém,
preciso buscar todos os atendimentos de um determinado dia,
alguém pode me ajudar a fazer essa consulta?
sei que o POSTGRES tem algumas funções para trabalhar com esses tipos de dado,
mas ainda não consegui achar uma função que pesquisasse por dia,

alguém pode me ajudar?

pode ser tanto no HQL quanto no SQL puro do Postgres mesmo!

Um Abraço:)

4 Respostas

Hebert_Coelho

Aqui mostra como realizar consulta com datas com JPA/Hibernate: JPA Consultas e Dicas.

vitordaumling

valeu Hebert muito bom o mini-book, algumas condições eu até já conhecia,
mas não tava lembrando, me ajudou muito, valeu!

Hebert_Coelho

vitordaumling:
valeu Hebert muito bom o mini-book, algumas condições eu até já conhecia,
mas não tava lembrando, me ajudou muito, valeu!
Bom saber que ajudou. Por nada! =D

vitordaumling

posto a solução aqui, pra buscar horarios de atendimento por dia

A query ficou assim

@NamedQuery(name = "HorarioAtendimento.findByDataHoraAtendimento", query = "SELECT h FROM HorarioAtendimento h WHERE h.dataHoraAtendimento between :startDate and :endDate")

dai o metodo pra executar a Query ficou assim:

public List<HorarioAtendimento> findByDataHoraAtendimento(Date startDate, Date endDate)
            throws Throwable {
        List<HorarioAtendimento> horariosAtendimento = null;
        try {
            transaction.begin();
            Query query = entityManager.createNamedQuery("HorarioAtendimento.findByDataHoraAtendimento");
            
            //atendimentos entre a 00:00 da data inicial passada como parametro
            Calendar c1 = Calendar.getInstance();
            c1.setTime(startDate);
            c1.set(Calendar.HOUR_OF_DAY, 0);
            c1.set(Calendar.MINUTE, 0);
            c1.set(Calendar.SECOND, 0);
            c1.set(Calendar.MILLISECOND, 0);
            // e as 23:59:59:99 da data final passada como parametro
            Calendar c2 = Calendar.getInstance();
            c2.setTime(endDate);
            c2.set(Calendar.HOUR_OF_DAY, 23);
            c2.set(Calendar.MINUTE, 59);
            c2.set(Calendar.SECOND, 59);
            c2.set(Calendar.MILLISECOND, 99);
            
            query.setParameter("startDate", startDate);
            query.setParameter("endDate", endDate);
            
            horariosAtendimento = query.getResultList();
            transaction.commit();
        } catch (Throwable t) {
            transaction.rollback();
            LOGGER.fatal("Erro ao buscar Horarios por DataHoraAtendimento.", t);
            throw t;
        }
        return horariosAtendimento;
    }

assim ele busca TODOS os horários de atendimento da data inicial até o final da data final passada como parametro

Criado 13 de novembro de 2012
Ultima resposta 13 de nov. de 2012
Respostas 4
Participantes 2