Em 12-09-2013 08:59, Thiago escreveu:
Vou tentar explicar melhor minha necessidade.

Na tabela agrupada que tenho, preciso fazer uma consulta da vendas do
mês 04/2013 até 06/2013.

Para fazer esta consulta eu teria que utilizar o seguinte where:

ano = 2013 and mes = 4 or
ano = 2013 and mes = 5 or
ano = 2013 and mes = 6

Acontece que meus parâmetros de entrada são duas datas, inicial e final.
Eu gostaria de fazer uma consulta desta utilizando alguma forma de between.

Eu tentei utilizar assim:
cast(cast(ano as text) || lpad(cast(mes as text),2,'0') as integer)
between 201304 and 201306

Acho que seu erro de modelagem, então, é não confiar no tipo de dados data. Se você usasse a data, e não duas colunas mês e ano, seu between seria simples como data between '2013-04-01' and '2013-06-30'.

Acontece que neste caso não irá utilizar os índices.

Não entendi essa afirmativa.

Eu gostaria de saber se existe uma forma de fazer a consulta utilizando
alguma forma de between ou teria que estruturar a tabela de forma
diferente, talvez com um campo ano_mes.

Veja exemplo acima.
Acho que seu problema é modelagem e desconhecimento de SQL.

[]s

__________________________________
Flavio Henrique A. Gurgel
Líder de Projetos Especiais
Consultoria, Projetos & Treinamentos 4LINUX
Tel1: +55-11.2125-4747 ou 2125-4748
www.4linux.com.br
email: [email protected]
______________________________
FREE SOFTWARE SOLUTIONS
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a