- Este tópico contém 4 respostas, 3 vozes e foi atualizado pela última vez 17 anos, 11 meses atrás por
santosclay.
-
AutorPosts
-
18 de abril de 2008 às 12:50 am #81708
leo_jf
ParticipanteFala galera, tudo bom.
Nao tive tempo de ler o que vcs responderam sobre minha pergunta, mas ao final do dia vou ler.
Mas, novamente, peço outra ajuda.
Preciso buscar no meu select uma informação.
select…. acesso >= TO_DATE(’16/04/2008′,’DD/MM/YYYY’)
e que também seja < do que sysdate, ou seja, Quero buscar na tabela os registros maiores que uma certa data, como exemplo, 16/04 para que nao busca dados muito antigos E que seja com data maior do que a do dia que rodei a aplicação. SYSDATE. Ou seja, quero buscar que não podem ser menores que uma certa data, pois estaria buscando dados muito antigo, o que não me interessa e que sejam maiores que o dia que eu executar a procedure, ou seja, maiores que sysdate. Alguem teria uma dica?18 de abril de 2008 às 4:30 pm #81714Marcio68Almeida
ParticipanteNa verdade, o que você procura são dados que estejam ENTRE duas datas…
Você poderia usar o BETWEEN, porém ele inclui as extremidades.
O mais simples é você colocar :
Select *
From tabela
Where to_char (data, 'yyyymmdd') >= '20080416'
And to_char (data, 'yyyymmdd') < to_char (sysdate, 'yyyymmdd')
18 de abril de 2008 às 6:02 pm #81717santosclay
ParticipanteOlá pessoal.
Na minha opinião acho que se o tipo da coluna da data é date o código abaixo seria melhor em relação a custo uma fez que não será necessária a conversão de campos e tipos para comparação:
Código:
SELECT *
FROM TABELA TABELA
WHERE TABELA.DATA BETWEEN TO_DATE('16/04/2008', 'DD/MM/YYYY') AND TO_DATE(SYSDATE - 1, 'DD/MM/YYYY')
O custo do código abaixo é maior devido a necessidade de conversões, caso o tipo do campo data seja date. Se o tipo do for campo varchar2 o exemplo anterior será mais lento.
Código:
SELECT *
FROM TABELA
WHERE TO_CHAR (DATA, 'YYYYMMDD') >= '20080416'
AND TO_CHAR (DATA, 'YYYYMMDD') < TO_CHAR (SYSDATE, 'YYYYMMDD')
Logo execute um explain para avaliar os custos e utilize as sugetões (Minha ou do Marcio) em função do tipo do campo data na tabela.
Abraços Clayton.
18 de abril de 2008 às 6:35 pm #81718santosclay
ParticipanteErrata:
Mude o trecho em destaque
SELECT *
FROM TABELA TABELA
WHERE TABELA.DATA BETWEEN TO_DATE(’16/04/2008′, ‘DD/MM/YYYY’) AND TO_DATE(SYSDATE – 1, ‘DD/MM/YYYY’)Para:
SELECT *
FROM TABELA TABELA
WHERE TABELA.DATA BETWEEN TO_DATE(’16/04/2008′, ‘DD/MM/YYYY’) AND SYSDATE – 1Cometi o erro de converter date pra date.
Abraços Clayton.
18 de abril de 2008 às 6:35 pm #81719santosclay
ParticipanteErrata:
Mude o trecho em destaque
SELECT *
FROM TABELA TABELA
WHERE TABELA.DATA BETWEEN TO_DATE(’16/04/2008′, ‘DD/MM/YYYY’) AND TO_DATE(SYSDATE – 1, ‘DD/MM/YYYY’)Para:
SELECT *
FROM TABELA TABELA
WHERE TABELA.DATA BETWEEN TO_DATE(’16/04/2008′, ‘DD/MM/YYYY’) AND SYSDATE – 1Cometi o erro de converter date pra date.
Abraços Clayton.
-
AutorPosts
- Você deve fazer login para responder a este tópico.