filtro em data

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
carlos12
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 123
Registrado em: Qua, 24 Out 2007 4:31 pm
Localização: rio

Olá pessoal, vamos a duvida do dia...

tenho uma tabela data que contém data de usuários de vencimento tipo:

DTVENCIMENTO

eu queria trazer todos os usuários que tenham a data de vencimento 10

tipo 10/08/2007
10/09/2007
10/10/2007

só as data 10 de caa mês

valews
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Dá uma olhada neste exemplo brother:

Selecionar tudo

SELECT SYSDATE
  FROM DUAL
 WHERE TO_CHAR (SYSDATE, 'dd') = 28
No teu caso, coloque a igualdade 10.

Selecionar tudo

 WHERE TO_CHAR (TEU_CAMPO, 'dd') = 10
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

E ai Carlos, beleza??

só deixando uma observação, verifique se existe algum indíce no campo da data, pois utilizando o to_char o banco não utilizará o indíce do campo, se sua tabela for grande poderá ficar lento a pesquisa..

[]'s!!
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Dá também pra usar o EXTRACT:

Selecionar tudo

where extract(DAY FROM DATE seu_campo) = 10
Funciona com oracle 9i em diante!
Veja mais sobre isso em:
http://www.techonthenet.com/oracle/func ... xtract.php
http://stanford.edu/dept/itss/docs/orac ... ons045.htm
Oracle/PLSQL: Extract Function

In Oracle/PLSQL, the extract function extracts a value from a date or interval value.

The syntax for the extract function is:

Selecionar tudo

    EXTRACT (
    { YEAR | MONTH | DAY | HOUR | MINUTE | SECOND }
    | { TIMEZONE_HOUR | TIMEZONE_MINUTE }
    | { TIMEZONE_REGION | TIMEZONE_ABBR }
    FROM { date_value | interval_value } )
You can only extract YEAR, MONTH, and DAY from a DATE.

You can only extract TIMEZONE_HOUR and TIMEZONE_MINUTE from a timestamp with a time zone datatype.

Applies To:

* Oracle 9i, Oracle 10g, Oracle 11g


For example:

Selecionar tudo

    extract(YEAR FROM DATE '2003-08-22') 	would return 2003
    extract(MONTH FROM DATE '2003-08-22') 	would return 8
    extract(DAY FROM DATE '2003-08-22') 	would return 22
Editado pela última vez por dr_gori em Qui, 10 Jul 2008 8:51 am, em um total de 1 vez.
Avatar do usuário
Porva
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 342
Registrado em: Seg, 29 Jan 2007 7:36 am
Localização: São Paulo/SP
Rafael S. Nunes
São Paulo/SP

aproveitando o embalo galera, quais são as funções que se aplicadas aos campos, ignoram seus índices, qualquer função de conversão???
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

E ai Porva, beleza?

cara, se existe alguma q não faça isso eu não sei, mas sei q a maioria e as mais utilizadas matam o indíce...

Selecionar tudo

TO_CHAR, TO_DATE, SUBSTR, TRUNC, TO_NUMBER, LPAD, RPAD, INSTR, ROUND, NVL
uma opção seria você já criar o indice com o campo da forma q você deseja utilizar, você pode por exemplo ter um campo na sua base q tenha o formato DD/MM/YYYY HH24:MI:SS, com um campo desse tipo você tem que dar um trunc nele caso queria comparar ele com outra data dentro do seu select.. Pra resolver isso você pode criar um indice já truncado, dessa forma você não terá q colocar trunc no campo do seu select. assim não perdendo performance. Por exemplo.

Selecionar tudo

create index TAB_RESERVA_DT_RESERVA on TAB_RESERVA (TRUNC(DT_RESERVA))
[]'s!!
carlos12
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 123
Registrado em: Qua, 24 Out 2007 4:31 pm
Localização: rio

pessoal deu certinho aqui usei em um relatório pela manhã mas só agora pude entrar no forum pra agradecer valeu mesmo pelas dicas que Deus abençoe a todos brigadão.








:D
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 12 visitantes