Fórum Problemas com filtragem por data. #215687

20/02/2004

0

Não consigo fazer filtragem por data no postgresql.

Tenho uma tabela de comissões de vendedores e preciso fazer o filtro pro data. Quando executo os seguintes comando:

[i:7f22198a6d]select * from com where codven = ´00001´ and (data >= ´01/03/2004´ and data <= ´31/03/2004´) [/i:7f22198a6d]

[b:7f22198a6d]ou [/b:7f22198a6d]

[i:7f22198a6d]select * from com where codven = ´00001´ and data between ´01/03/04´ and ´31/03/04´ [/i:7f22198a6d]

o resultado é o seguinte:

 
+-----------+--------+------------+-------------------+----+-------+------+--------+ 
| codcomiss | codven | data       | descricao         | dc | valor | perc | comiss | 
+-----------+--------+------------+-------------------+----+-------+------+--------+ 
| 000002    | 00001  | 02/02/2004 | teste de vendas 2 | c  | 10000 |    3 |    300 | 
| 000003    | 00001  | 10/02/2004 | teste de vendas 3 | d  |  1000 |    3 |     30 | 
| 000004    | 00001  | 01/03/2004 | teste de vendas 4 | c  | 15000 |    3 |    450 | 
| 000001    | 00001  | 01/02/2004 | teste de vendas 1 | c  | 15000 |    3 |    450 | 
+-----------+--------+------------+-------------------+----+-------+------+--------+ 


Porém o resultado deveria ser o seguinte:

+-----------+--------+------------+-------------------+----+-------+------+--------+ 
| codcomiss | codven | data       | descricao         | dc | valor | perc | comiss | 
+-----------+--------+------------+-------------------+----+-------+------+--------+ 
| 000004    | 00001  | 01/03/2004 | teste de vendas 4 | c  | 15000 |    3 |    450 | 
+-----------+--------+------------+-------------------+----+-------+------+--------+


Gostaria que alguém me auxilia-se dizendo como posso fazer a filtragem por data nesta situação???

Valeu galera, Abraços.

Paulo.


Paulomerino

Paulomerino

Responder

Posts

20/02/2004

Paulo_amorim

Olá

Estou apenas chutando, pois não sei se isso eh plausivel...

Mas o Banco nao poderia ser ´inteligente´ o suficiente pra interpretar a data?

qd voce digita 01/03/04, ele pode reconhecer como 3/1/2004 (forma americana)

entretanto, no caso de 31/03/04, ele nao pode fazer 3/31/2004, entao ele mantem....

Pode ser uma causa... :roll:
Até+


Responder

Gostei + 0

20/02/2004

Paulomerino

Com certeza não é esse o problema, pois o banco está interpretando a data no nosso formato (dia/mes/ano) e não no americano.

Eu já esperimentei todas as situações de formato possíveis e imagináveis e nenhuma funcionou.

Estou começando a acreditar que seja algum bug no banco instalado na minha máquina.


Responder

Gostei + 0

20/02/2004

Adilsond

Experimente passar as datas por parametros.

select * from com where codven = ´00001´ and data >= :DataIni and data <= :DataFin
ou
select * from com where codven = ´00001´ and data between :DataIni and :DataFin

MinhaQuery.ParamByName(´DataIni´).AsDate := StrToDate(´01/03/2004´);
MinhaQuery.ParamByName(´DataFin´).AsDate := StrToDate(´31/03/2004´);


Responder

Gostei + 0

20/02/2004

Andrey

Pode ser q ele esteja interpretando as datas como string ao invés de data mesmo. Experimente fazer:

select * from com where codven = ´00001´ and (data >= to_date(´01/03/2004´,´dd/mm/yyyy´) and data <= to_date(´31/03/2004´,´dd/mm/yyyy´))

ou

select * from com where codven = ´00001´ and data between to_date(´01/03/04´,´dd/mm/yyyy´) and to_date(´31/03/04´,´dd/mm/yyyy´)


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar