Fórum Utilizando select para consultar campos com data. #367829

21/01/2009

0

Boa Noite, amigos.

Estou utilizando o Delphi 7.
Tenho um banco em firebird 2.0 e uma das tabelas tem um campo date.
Gostaria de utilizar um select para fazer uma consulta no banco.

strSql := ´Select * from tabela2 where campodata = ´ + DatadeHoje
strSql := ´select * from tabela2 where campodata = ´ + DatadeOntem

como faço isto no delphi?

Vcs entenderam o que eu quero?
No primeiro select quero que ele me mostre todos os registros onde o campodata seja igual a data de hoje.
No segundo select quero que ele me mostre todos os registros onde o campodata seja igual a data de ontem.
Tem como juntar os dois selects em um só? Como faço isto?

Obrigado.

Uelinton


Uelinton_reis

Uelinton_reis

Responder

Posts

21/01/2009

Fabriciocolombo

Se a sua dúvida é com relação ao formato da data, pode utilizar o formato YYYY-MM-DD.

Se quiser usar as duas datas no mesmo select, pode utilizar o condicional ´IN´:

´Select * from tabela2 where campodata in (´ + FormatDateTime(´YYYY-MM-DD´, DatadeHoje) + ´,´ + FormatDateTime(´YYYY-MM-DD´, DatadeOntem) + ´)´;


Responder

Gostei + 0

22/01/2009

Luiz Henrique

Se a sua dúvida é com relação ao formato da data, pode utilizar o formato YYYY-MM-DD.


Bom dia, tudo bl

Nao cheguei a testar neste formato ai Fabricio, eu uso: ´mm/dd/yyyy´ para firebird.


Responder

Gostei + 0

22/01/2009

Uelinton_reis

Se a sua dúvida é com relação ao formato da data, pode utilizar o formato YYYY-MM-DD. Se quiser usar as duas datas no mesmo select, pode utilizar o condicional ´IN´: ´Select * from tabela2 where campodata in (´ + FormatDateTime(´YYYY-MM-DD´, DatadeHoje) + ´,´ + FormatDateTime(´YYYY-MM-DD´, DatadeOntem) + ´)´;


Bom dia Fabricio,

Estou fazendo desta forma mas esta dando erro:

strSqlOrc:= ´select * from ORC where DATA_STATUS_ORC = ´ + FormatDateTime(´DD-MM-YYYY´,date);
menuprin.IBQOrc.Close;
menuprin.IBQOrc.SQL.Clear;
menuprin.IBQOrc.SQL.Add(strSqlOrc);
menuprin.IBQOrc.Open;

Ele da o seguinte erro:

Debugger Exception Notification

Project SGKB.exe raised exception class EIBInterBaseError with message ´expression evaluation not supported´. Process stopped. Use Step or Run to continue.

Por que será que esta dando este erro.

Obrigado.


Responder

Gostei + 0

22/01/2009

Joaoshi

Colega, altere:

strSqlOrc:= ´select * from ORC where DATA_STATUS_ORC = ´ + FormatDateTime(´DD-MM-YYYY´,date); 


para:

strSqlOrc:= ´select * from ORC where DATA_STATUS_ORC = ´ + QuotedStr(FormatDateTime(´DD-MM-YYYY´,date)); 


Espero ter ajudado.


Responder

Gostei + 0

22/01/2009

Uelinton_reis

Colega, altere:
strSqlOrc:= ´select * from ORC where DATA_STATUS_ORC = ´ + FormatDateTime(´DD-MM-YYYY´,date); 
para:
strSqlOrc:= ´select * from ORC where DATA_STATUS_ORC = ´ + QuotedStr(FormatDateTime(´DD-MM-YYYY´,date)); 
Espero ter ajudado.


Caros amigos,

consegui resolver o problema desta forma:

strSqlOrc:= ´select * from ORC where DATA_STATUS_ORC = current_date´;

Beleza, ele esta fazendo uma consulta no banco para me mostrar todos os registros cadastrado com data de hoje..... RESOLVIDO

Agora eu preciso que ele me faça a consulta e me mostre todos os registro do dia de ontem.

como devo fazer.

obrigado.


Responder

Gostei + 0

23/01/2009

Leonardo_age

Fala gente,

Tente converter a data da senguinte maneira:

Promeiro cria a função:
Function FormatDateBD(data:string) : String;
Begin

case strtoint(copy(data,4,2)) of
      1 : result:=copy(data,1,2)+´-Jan-´+copy(data,7,4);
      2 : result:=copy(data,1,2)+´-Feb-´+copy(data,7,4);
      3 : result:=copy(data,1,2)+´-Mar-´+copy(data,7,4);
      4 : result:=copy(data,1,2)+´-Apr-´+copy(data,7,4);
      5 : result:=copy(data,1,2)+´-May-´+copy(data,7,4);
      6 : result:=copy(data,1,2)+´-Jun-´+copy(data,7,4);
      7 : result:=copy(data,1,2)+´-Jul-´+copy(data,7,4);
      8 : result:=copy(data,1,2)+´-Aug-´+copy(data,7,4);
      9 : result:=copy(data,1,2)+´-Sep-´+copy(data,7,4);
      10 : result:=copy(data,1,2)+´-Oct-´+copy(data,7,4);
      11 : result:=copy(data,1,2)+´-Nov-´+copy(data,7,4);
      12 : result:=copy(data,1,2)+´-Dec-´+copy(data,7,4);
      else  result := ´data invalida´;
end;
end;



Depois disso ao passar a data a ser gravada/consultada no banco de dados utilize o seguinte comando:

strSqlOrc:= ´select * from ORC where DATA_STATUS_ORC = ´ + QuotedStr(FormatDateBD(FormatDateTime(´DD-MM-YYYY´,date -1)));


QuotedStr -> Coloca aspas nas extremidadas do texto = ´01/01/2008´, lembre-se que mesmo sendo uma data essa informação é um texto e deve ser tratada como tal.

FormatDateBD -> tranforma a data no formado dd-mmm-yyyy de forma que o mês seja escrito em inglês.

FormatDateTime -> utilizei esse comando para forçar a formatação da data com dois dígitos no mês, senão dá erro na função anterior.

Date -1 -> pois quero o dia de ontem. Poderia passar a data que quisesse, até mesmo uma data armazenada em tabela.


Tente assim.


Responder

Gostei + 0

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

Aceitar