PL SQL - Dúvida Query com range de datas

18/02/2016

0

Galera, alguém me socorre nessa?

Preciso construir uma query que traga os registros do horário operacional da empresa que vai das 06:00:00 às 05:59:59 do dia seguinte.
Não sei como posso fazer isso, basicamente tenho duas condições:
select * from  tooldba.vw_sort_volume_conhec t 
  where T.SO_VOLCON_RSCCDATADESCIDA between (to_date(sysdate, 'DD/MM/RRRR') + 360 / 1440)-1 and sysdate 
  and NVL(T.ID_FILIAL_OPERACAO, 1) = 4 


ou
select * from  tooldba.vw_sort_volume_conhec t 
  where T.SO_VOLCON_RSCCDATADESCIDA between (to_date(sysdate, 'DD/MM/RRRR') + 360 / 1440) and sysdate
  and NVL(T.ID_FILIAL_OPERACAO, 1) = 4 


Sendo que a consulta irá rodar automaticamente, em um relatório.

Obrigadooo!
Daniel

Daniel

Responder

Post mais votado

18/02/2016

Boas Daniel,
não sei se entendi muito bem mas se for pesquisar colocando o horário seria algo +- assim :

select To_Char(data, 'HH24:MI:SS') Hora
from tabela
where To_Char(data, 'HH24:MI:SS') BETWEEN '06:00:00' and '05:59:59'
order by To_Char(data, 'HH24:MI:SS');

Hector Figueroa

Hector Figueroa
Responder

Mais Posts

18/02/2016

Daniel

Opa, valeu Hector!

O problema é o seguinte o range que preciso começa em um dia e termina em outro, por exemplo: começou HOJE às 06:00:00 e vai até AMANHÃ às 05:59:59.
Eu tinha tentado usar o seguinte:
select  *
  from tooldba.vw_sort_volume_conhec t
where T.SO_VOLCON_RSCCDATADESCIDA between to_date(sysdate, 'DD/MM/RRRR') and sysdate
  


Mas o problema que se eu executar essa consulta às 04:00:00 (por exemplo) esse lógica não funcionará

Muito obrigado pela ajuda cara!!!
Responder

18/02/2016

Jair N.

Boa Tarde converte tudo para "data e Hora" e o intervalo continua sendo BETWEEN
EX:
SELECT CAST(TO_CHAR(CAST('17-02-2016' AS DATE),'DD-MM-YYYY') || TO_CHAR(CAST('08:20:32' AS TIME), ' HH:MI:SS') AS TIMESTAMP) AS periodo FROM DUAL
UNION
SELECT CAST(TO_CHAR(CAST('18-02-2016' AS DATE),'DD-MM-YYYY') || TO_CHAR(CAST('11:23:54' AS TIME), ' HH:MI:SS') AS TIMESTAMP) AS periodo FROM DUAL
Responder

18/02/2016

Hector Figueroa

Daniel testa a consulta abaixo a primeira e de acordo com a data/hora atual, sendo que ela pega a data/hora de ontem ate o atual momento
select *
from tooldba.vw_sort_volume_conhec t
where To_Char(T.SO_VOLCON_RSCCDATADESCIDA, 'DD/MM/RRRR HH24:MI:SS') between to_date(sysdate, 'DD/MM/RRRR HH24:MI:SS') - 1 and to_date(sysdate, 'DD/MM/RRRR HH24:MI:SS');


segue um exemplo, ve ae e me fala se funcionaria :)
select *
from tooldba.vw_sort_volume_conhec t
where To_Char(T.SO_VOLCON_RSCCDATADESCIDA, 'DD/MM/RRRR HH24:MI:SS') between to_date('17/01/2016 15:40:00', 'DD/MM/RRRR HH24:MI:SS') and to_date('18/01/2016 15:40:00', 'DD/MM/RRRR HH24:MI:SS');

Responder

18/02/2016

Daniel

Jair e Hector!

Galera obrigado pela ajuda, mas não rolou!!!

Na minha ignorância e limitação de entendimento de SQL tentei o seguinte:

select
case
 when
  T.SO_VOLCON_RSCCDATADESCIDA < (to_date(sysdate, 'DD/MM/RRRR') + 360 / 1440) then
  (select * from  tooldba.vw_sort_volume_conhec t 
  where T.SO_VOLCON_RSCCDATADESCIDA between (to_date(sysdate, 'DD/MM/RRRR') + 360 / 1440)-1 and sysdate 
  and NVL(T.ID_FILIAL_OPERACAO, 1) = 4 
  order by T.SO_VOLCON_RSCCDATADESCIDA)
  
  else
  
  (select * from  tooldba.vw_sort_volume_conhec t 
  where T.SO_VOLCON_RSCCDATADESCIDA between (to_date(sysdate, 'DD/MM/RRRR') + 360 / 1440) and sysdate
  and NVL(T.ID_FILIAL_OPERACAO, 1) = 4 
  order by T.SO_VOLCON_RSCCDATADESCIDA)
  end
  from oldba.vw_sort_volume_conhec t


acho que observando essa minha tentativa vocês entendem melhor a minha necessidade.

Valeu Pessoal!!!
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar