Ajuda em comparar Data no Firebird

Delphi

30/08/2006

Não sei como fazer uma compararção entre uma data digitado em um MaskEdit e um campo Date no FireBird.
Estou usando a consulta assim:
...
Sql.Append(´Where ´+seta+´ Like´+QuotedStr(aux+´¬´)+´ORDER BY OS´);
...
´Seta´ é o nome do campo,aux é uma string de algum Edit.
Grava o dia corrente assim:
...
Append(QuotedStr(FormatDateTime(´mm/dd/yyyy´,Date))+´,´ );
...
Eu preciso fazer uma consulta onde se digita algo em um MaskEdit formatado para aceitar uma data (29/08/2006) para comparar a uma data exata ou próxima em campo Date,ou usando a consulta da sql acima ou montando outra.
Não consegui resultados...


Kroki

Kroki

Curtidas 0

Respostas

Ronaldo.cutu

Ronaldo.cutu

30/08/2006

a data de comparação te que ter o mesmo formato que do banco
ex:
mm/dd/yyyy, assim deve ficar seu aux

outra coisa
se seu campo no banco estiver data e hora transformar para data
ex:
CAST(campo AS DATE)

para procurar data ou intervalos use

´where cast(seta as date) between ´´´+data_inicio+´´´ and ´´´+:data_fim....

caso vc queira usar somente um campo para usuario informar a data
e queira 1 dia anterior e 1 dia posterior a data

´where cast(seta as date) between ´´´+data_inicio+´´´+1 and ´´´+:data_fim+´´´+1´

att

Ronaldo


GOSTEI 0
Kroki

Kroki

30/08/2006

Eu só consegui resolver aqui desse jeito:
Criei uma variavel TDateTime(auxdata).
...
auxdata:=StrToDate(maskedit1.Text);
aux:=FormatDateTime(´yyyy-mm-dd´,auxdata);
...
Só consigo resultado se a string ´aux´ for formatada como acima (?).
Descobrí que o banco esta guardando dessa maneira(2006-08-29).
Porque isso?


GOSTEI 0
Ronaldo.cutu

Ronaldo.cutu

30/08/2006

nunca vi isso acontecer, o padrao do Firebird é mm/dd/yyyy

quando vc vai comparar data atraves de SQL, vc tem que passar a data
formatada no padrão do banco porque se não ele vai pegar data errado
ou te acusar um erro

eu utilizo comparação de data via delphi e Firebird desta forma e nunca
tive problemas

att

Ronaldo


GOSTEI 0
POSTAR