Retornar um Between de 2 campos "ANO" e 2 campos &

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
rderoci
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 22
Registrado em: Sex, 07 Nov 2008 10:55 pm
Localização: RJ
iniciante;

Como faço para retornar o resultado de um between, sendo que minha tabela está estruturada com os campos separados da seguinte forma:

exemlo:
'ANO' = 2010
'mês' = 9

Ao invés de:
'COMPETENCIA' = 9/2010

Aí fico com dificultade em me retornar between, principalmente entre anos.

Att,
Rômulo D.
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

Selecionar tudo


select to_date('9/2010','MM/YYYY') from dual;

select ...
where COMPETENCIA between to_date(mês || ano,'MM/YYYY') and to_date(mês || ano,'MM/YYYY')

rogenaro
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Sex, 30 Mar 2007 7:26 pm
Localização: Londrina - PR
Rafael O. Genaro

Você pode converter para número, no formato yyyymm:

Selecionar tudo

where  201001 between to_number( lpad( ano, 4, 0 )||lpad( mês, 2, 0 ) )
              and     to_number( lpad( ano, 4, 0 )||lpad( mês, 2, 0 ) )
Ou converter para date mesmo:

Selecionar tudo

to_date( lpad(ano, 4, 0)||lpad(mês, 2, 0)||'01', 'yyyymmdd' )
rderoci
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 22
Registrado em: Sex, 07 Nov 2008 10:55 pm
Localização: RJ
iniciante;

Beleza... funcionou...

Agora, tenho outro BD, sei que aqui não é o lugar certo para pedir isso, SQL SERVER... Você sabe como posso fazer o mesmo lá? Visto que não tem a função TO_DATE

Obrigado!
Responder
  • Informação
  • Quem está online

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