GARANTIR DESCONTO

Fórum Erro no comando between no Firebird #265603

17/01/2005

0

Estou com um problema no[b:390f0359da] Firebird[/b:390f0359da]!

Quando tento uma sentença(Exemplo) SQL: << select * from pessoa_fisica where dt_nascimento between ´01/12/1984´ and ´09/01/2004´ >>
até ai tudo bem, o problema é quando acrescento um valor na data(dia) maior que 13(no dia)


Por exemplo: << select * from pessoa_fisica where dt_nascimento between ´01/12/1984´ and [b:390f0359da]´14/01/2004´ [/b:390f0359da]>>
No dia ´14/01/2004´o Firebird me retorna um erro:

Isto logo abaixo é a mensagem que ele me retorna:
/************************************************************/
[b:390f0359da]´Error de SQL´
ISC Error Code: 335544334
ISC Error Message: conversion error from string ´14/01/2004´

Statement:
TIBOInternalDataset:
´TApplication>.frmMain.dlgWissql...´[/b:390f0359da]
/***********************************************************/

Bem! Não sei se é erro do banco ou da interface que estou utilizando p/ manipular os dados;
Estou utilizando:

Versão do Banco: Firebird ´1.5´ ou melho ´1.5.1.4481´
Interface: IBOConsole

Procurei detalhar bem a mensagem de erro p/ ver se alguem poderia me ajudar
Se puderem me dar uma ajuda ficarei grato!

Atensiosamente Fernando


Fernando Piccini

Fernando Piccini

Responder

Posts

17/01/2005

Vprates

Talvez vc esteja usando o formato de data assim
mm/dd/yyyy em vez de dd/mm/yyyy

Vlw


Responder

Gostei + 0

17/01/2005

Fernando Piccini

Estou usando o formato de data padrão: dd/mm/yyyy como mostrado no 1º Exemplo no inicio da página!

Vlw!


Responder

Gostei + 0

17/01/2005

Fernando Piccini

Alguem sabe ai?


Responder

Gostei + 0

17/01/2005

Debug

Vc ja tentou assim mm/dd/yyyy?


Responder

Gostei + 0

17/01/2005

Vinicius2k

Colega,

O Firebird só aceita alguns formatos de data e dd/mm/yyyy não é um deles. Esta é a razão do erro que vc está recebendo.

Os formatos são : [b:fe64e8258d]mm/dd/yyyy[/b:fe64e8258d], [b:fe64e8258d]dd.mm.yyyy[/b:fe64e8258d] e [b:fe64e8258d]yyyy-mm-dd[/b:fe64e8258d].
Vc deverá usar um destes formatos ou utilizar parametros na consulta, por exemplo :
With SuaQuery do
begin
  Close;
  SQL.Clear;
  SQL.Add(´select * from pessoa_fisica where dt_nascimento between :datainicial and :datafinal´);
  SuaQuery.ParamByName(´datainicial).AsDate:= StrToDate(´01/12/1984´);
  SuaQuery.ParamByName(´datafinal).AsDate:= StrToDate(´14/01/2004´);
  Open;
end;

ou a data vindo de um TDateEdit, por exemplo :
With SuaQuery do
begin
  Close;
  SQL.Clear;
  SQL.Add(´select * from pessoa_fisica where dt_nascimento between :datainicial and :datafinal´);
  SuaQuery.ParamByName(´datainicial).AsDate:= DateEdit1.Date;
  SuaQuery.ParamByName(´datafinal).AsDate:= DateEdit2.Date;
  Open;
end;

A solução com parametros é sempre a mais adequada porque não importará a formatação de data do S.O... A conversão ficará a cargo da própria aplicação.

T+


Responder

Gostei + 0

17/01/2005

Fernando Piccini

Para o pessoal que colaborou ai, com a duvida muito [color=green:7a894d6824][b:7a894d6824]obrigado[/b:7a894d6824][/color:7a894d6824]! :D

abraços pra todos

vlw


Responder

Gostei + 0

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

Aceitar