PL/SQL – Como fazer select para buscar dados por horário no Oracle

Olá, neste exemplo de hoje, vou mostrar como fazer uma consulta SQL em um campo do tipo (DATE) para filtrar os dados por horário.

Criando a tabela (BLOG_TEMP_DATAS) para o exercicio.

create table BLOG_TEMP_DATAS
(
NR_SEQUENCIA NUMBER,
DT_CONSULTA DATE
)

Consultando os dados na tabela

Utilizando o comando to_char(dt_consulta, ‘hh24’), podemos utilizar a condição para filtrar apenas pelo horário. Veja abaixo o exemplo.

select
*
from
blog_temp_datas
where to_char(dt_consulta, ‘hh24′) between ’12’ and ’16’

 select 
   nr_sequencia
  ,to_char(dt_consulta, 'hh24')
  ,dt_consulta
 from 
 blog_temp_datas
 where to_char(dt_consulta, 'hh24') between '12' and '16'

Dividindo uma string usando regexp_substr 

Olá amigos,

Neste post vou falar sobre separação (Split) de uma variável SQL (Oracle) em mais de uma parte.

Diante de um problema, onde todos os arquivos estavam em uma mesma pasta(fisicamente) no servidor, tínhamos a necessidade de identificar e separar estes arquivos por módulo do sistema. Mas como?

No sistema, tínhamos armazenado o nome destes arquivos, por módulos e em tabelas diversas.

O desafio surgiu, porque havia mais de 20.000 (vinte mil) arquivos na pasta, misturados com arquivos temporais e com arquivos que não podíamos perder.

E se o servidor fosse reiniciado, tudo se perderia, pois estavam armazenados em uma pasta temporária.

Então, cheguei a uma solução de criar um script (comand) para executarmos no linux e fazer a separação dos arquivos.

Para explicar melhor, havia a seguinte situação:

Nome do armazenamento de arquivos, mesclado com o nome do módulo, com o nome do arquivo fisicamente e nome do arquivo original.

servidor-stogare://MODULO.c0206646-08dfs-4174-9c17-b88ddfs/3l8apU-5e275ed5-Aarquivo 20940093.pdf?nomereal 20940093.pdf

Precisávamos separar o nome do arquivo.

Com comando abaixo, obtive apenas o nome do arquivo.

select
ds_arquivo,
‘cp “‘ ||REGEXP_SUBSTR(replace(ds_arquivo, ‘servidor-stogare://MODULO.csss6646ss-8dfs-4174-9c17-b88ddfs/’,”), ‘[^?]+’, 1, 1) || ‘” pasta-backup’
from tabela_banco_dados

 

Resultado:

3l8apU-5e275ed5-Aarquivo 20940093.pdf

 

Então, concatenei com o comando de copia de arquivos do linux (CentOS) + nome do arquivo + nome do diretório de destino, para a copia e backup dos arquivos.

cp “3l8apU-5e275ed5-Aarquivo 20940093.pdf” pasta-backup

A partir deste exemplo, gerei uma lista (txt) de todos os arquivos anexados ao módulo do sistema, e executamos no servidor para os copiar para uma nova pasta.

 

 

RANK Function  OVER (PARTITION BY

 

,RANK() over (partition by   to_char(CI.DAT_REALIZACAO,’mm/yyyy’)                                      –,b.mes_ano_ref
ORDER by  CI.DAT_REALIZACAO) RANK

Irá mostrar a ordenação pelo ranking, exemplo:

11/04/2015 – 1

12/04/2015 – 2

13/04/2015 – 3

13/04/2015 – 3

15/04/2015 – 4

16/04/2015 – 5

16/04/2015 – 5