Datas

19/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:2c1b4d039f]select * from com where codven = ´00001´ and (data >= ´01/03/2004´ and data <= ´31/03/2004´)[/i:2c1b4d039f]

[b:2c1b4d039f]ou[/b:2c1b4d039f]

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

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 | 
+-----------+--------+------------+-------------------+----+-------+------+--------+

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

07/06/2004

Danilo_zanaga

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:acd15f764e]select * from com where codven = ´00001´ and (data >= ´01/03/2004´ and data <= ´31/03/2004´)[/i:acd15f764e] [b:acd15f764e]ou[/b:acd15f764e] [i:acd15f764e]select * from com where codven = ´00001´ and data between ´01/03/04´ and ´31/03/04´[/i:acd15f764e] 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 | 
+-----------+--------+------------+-------------------+----+-------+------+--------+
Gostaria que alguém me auxilia-se dizendo como posso fazer a filtragem por data nesta situação??? Valeu galera, Abraços. Paulo.


Olá,

No seu lugar eu faria o seguinte:

[i:acd15f764e]select * from com where codven =:COD and (data >= :DATA1 and data <= DATA2)[/i:acd15f764e]

Onde:

COD: Código passado por parâmetro
DATA1 e DATA2: Intervalo das datas, passado por parametro

Note que, se estiver utilizando dbExpress e ClientDataset, você terá que usar a Unit SqlTimSt, para que você possa trabalhar com TSQLTimeStamp. Caso esteja usando ZeosDB, é só declarar DATA1 e DATA2 como ftDate

Caso utilize DBExpress faça o seguinte:

Var
myDataSQL: TSQLTimeStamp;
tmpData: TDateTime;

Begin
tmpData:=Datetimepicker.Date;
myDataSQL:=DateTimeToSQLTimeStamp(tmpData);
.
.
.
End;

Ai é só setar os parametros e abrir a query


Responder

05/01/2005

Jf

Olá, o formato da data está correcto? Não estara a interpretar MM/DD/YY
em vez de DD/MM/YY?


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar