Manipulaçao de um campo date que armazena data e hora.

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
lurlima
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Qua, 18 Mar 2009 9:06 pm
Localização: Belo Horizonte

Boa noite, sou nova no forum.
Estou começando agora e estou com o seguinte problema:

tenho na minha tabela um campo date que armazena data e hora. Preciso selecionar todos os campos onde a data armazenada é igual ao mês/ano que vo passar.

Ex: tenho armazenado na tabela assim: 10/02/2009 10:12:02
e vo entra somente com mês/ano ou seja 02/2009

tentei fazer assim:

Selecionar tudo

select * from tabela where dataArmazenada = to_char(02/2009, 'mm/yyyy');
Agradeço se alguém puder me ajudar, lu.
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

Olá, tudo bem?

Tenta da forma abaixo e veja se lhe ajuda:

Selecionar tudo

SELECT *
FROM tabela
WHERE TO_CHAR(dataArmazenada,'mm/rrrr')='02/2009';
O teu campo dataArmazenada deve estar no mesmo formato da tua comparação, por isso não resultava corretamente.

Qualquer dúvida, manda pra gente.
ruevers
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 324
Registrado em: Sex, 02 Jun 2006 1:48 pm
Localização: sp
Contato:

Caros,

eu faria diferente pro DBA de vocês ficar feliz com a performance do select, porque um dia se for usar assim, vai fazer full scan na tabela.

Eu faria assim....

Selecionar tudo

SELECT * 
FROM tabela 
where dataarmazenada >= to_date('01/02/2009','dd/mm/rrrr')
and dataarmazenada <=to_date(01/03/2009','dd/mm/rrrr');
assim, com certeza vai pegar o mês todo, vai ter um plano melhor e se dataarmazenada tiver indice, vai usar com certeza.
lurlima
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Qua, 18 Mar 2009 9:06 pm
Localização: Belo Horizonte

Obrigada eu testei aqui e consegui. lu
Responder
  • Informação
  • Quem está online

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