Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Samuel Mattos

[Resolvido] Trazer após hora atual do sistema

Recommended Posts

Bom dia tenho a seguinte consulta.

 

SELECT a.id_atend, a.num_senha, a.id_pri, a.id_stat, 
           to_char(a.dt_cha,'DD/MM/YYYY') as dt_cha, 
           to_char(a.dt_cheg,'HH24:MI:SS') as dt_cheg,
			 		to_char(a.dt_ini,'HH24:MI:SS') as dt_ini,
           to_char(LOCALTIMESTAMP, 'HH24:MI:SS')as dt_agora,
                                               to_char(a.dt_fim,'HH24:MI:SS') as dt_fim,
                                               to_char(a.dt_agendamento,'HH24:MI:SS') as dt_agendamento,
                    p.nm_pri, p.desc_pri, p.peso_pri, us.sigla_serv, us.id_serv
			FROM atendimentos a
			INNER JOIN uni_serv us
				ON us.id_serv = a.id_serv
				AND a.id_uni = us.id_uni
               INNER JOIN servicos s
                   ON s.id_serv = us.id_serv
			INNER JOIN prioridades p
				ON p.id_pri = a.id_pri
			WHERE
        (a.dt_agendamento <= LOCALTIMESTAMP or a.dt_agendamento is NULL)
         AND us.id_serv IN (92)
                   AND s.stat_serv = 1                     
				AND us.stat_serv = 1
				AND us.id_uni = 3
				AND a.id_stat IN (1)         
			ORDER BY dt_agendamento, dt_cheg DESC

 

Estou querendo trazer somente os atendimentos que estão com o agendamento de horário que está na coluna a.dt_agendamento, mas ele está me trazendo todos os dados, está clausulá

(a.dt_agendamento <= LOCALTIMESTAMP or a.dt_agendamento is NULL)

talvez não esteja funcionando pois ele me traz os atendimentos que ainda não eram para estar aparecendo. O oracle não me retorna nenhum erro ele somente me traz todos os atendimentos quando na realidade queria os atendimentos que ja chegou na hora marcada.

 

Desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentou SYSDATE no lugar de LOCALTIMESTAMP ?

 

Qual o TYPE das colunas de data, DATE ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentou SYSDATE no lugar de LOCALTIMESTAMP ?

 

Qual o TYPE das colunas de data, DATE ?

Sim ja tentei com o SYSDATE e não funcionou. O tipo da coluna é o timestamp com precisão 6 ja fiz consultas entre datas e funcionou só que está não está me retornando.

O dado está salvo da seguinte maneira '17/08/12 10:58:50,000000000 -03:00'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nunca usei este tipo timestamp realmente não sei o funcionamento.

 

Acho que em outro tópico você disse que tinha realmente de usar timestamp , não ?

 

O "manuel" não ajudou em nada ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Infelizmente eu tenho que me utilizar do timestamp é bem preciso ja verifiquei o manual e alguns forums gringos, mas até agora sem nenhuma solução continuarei a pesquisar sobre esse problema e qualquer avança eu posto aqui. Só lembrando que em outras consultas eu consigo trazer um intervalo de data perfeitamente e nesta consulta era para ele me trazer todos os campos até determinanda data e não funcionando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se isto ajuda.

Não li todo, é meio extenso mas parece tratar destas comparações (time zone etc).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Raça consegui resolver criando a seguinte função.

 

CREATE OR REPLACE FUNCTION DIF_DATA (dt_agendamento timestamp) RETURN number is
total number := null;

BEGIN
total := ((extract( day from (dt_agendamento) )*24*60*60)+
        (extract( hour from (dt_agendamento) )*60*60)+
        (extract( minute from (dt_agendamento) )*60)+
         (extract( second from (dt_agendamento)))) -          
         ((extract( day from (SYSTIMESTAMP))*24*60*60)+
        (extract( hour from (SYSTIMESTAMP))*60*60)+
        (extract( minute from (SYSTIMESTAMP))*60)+
         (extract( second from (SYSTIMESTAMP))));
         RETURN total;
         END;

 

Nela eu passo como paramentro a data que eu quero comparar com a data atual do sistema onde ele me retorna um number, se for menor que zero a data já passou se for maior que zero a data ainda não passou.

Valeu pessoal pode dar o tópico como resolvido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.