Fórum ... Comando SQL para selecionar datas... #233613
21/05/2004
0
Estou tentando usar os seguinte comandos abaixo em um banco PARADOX
SELECT * FROM Tab_Clientes
WHERE extract(month from Cad_Nacimento) BETWEEN :datainicio AND :datafim
ORDER BY Cad_Nacimento
e esta apresentando o erro: ´Type mismatch in expression´.
Na propriedade Params do meu Query estou usando Date Type = ftDate;
Gostaria de saber onde esta o erro nestes comandos. O que estou querendo fazer e selecionar registros do tipo data apenas usando o Dia e o Mes.
Desde já agradeço
Chaquater
SELECT * FROM Tab_Clientes
WHERE extract(month from Cad_Nacimento) BETWEEN :datainicio AND :datafim
ORDER BY Cad_Nacimento
e esta apresentando o erro: ´Type mismatch in expression´.
Na propriedade Params do meu Query estou usando Date Type = ftDate;
Gostaria de saber onde esta o erro nestes comandos. O que estou querendo fazer e selecionar registros do tipo data apenas usando o Dia e o Mes.
Desde já agradeço
Chaquater
Chaquater
Curtir tópico
+ 0
Responder
Posts
21/05/2004
Emerson Nascimento
o erro ocorre porque você está extraindo o mês do campo (inteiro representando o mês) e comparando com uma data (date).
você deveria fazer algo como:
SELECT * FROM Tab_Clientes
WHERE (extract(month from Cad_Nacimento) BETWEEN :mesinicio AND :mesfim)
and (extract(day from Cad_Nacimento) BETWEEN :diainicio AND :diafim)
ORDER BY Cad_Nacimento
Query.Close;
Query.ParamByName(´MESINICIO´).AsInteger := MonthOf( DataInicial );
Query.ParamByName(´MESFIM´).AsInteger := MonthOf( DataFinal );
Query.ParamByName(´DIAINICIO´).AsInteger := DayOf( DataInicial );
Query.ParamByName(´DIAFIM´).AsInteger := DayOf( DataFinal );
Query.Open;
você deveria fazer algo como:
SELECT * FROM Tab_Clientes
WHERE (extract(month from Cad_Nacimento) BETWEEN :mesinicio AND :mesfim)
and (extract(day from Cad_Nacimento) BETWEEN :diainicio AND :diafim)
ORDER BY Cad_Nacimento
Query.Close;
Query.ParamByName(´MESINICIO´).AsInteger := MonthOf( DataInicial );
Query.ParamByName(´MESFIM´).AsInteger := MonthOf( DataFinal );
Query.ParamByName(´DIAINICIO´).AsInteger := DayOf( DataInicial );
Query.ParamByName(´DIAFIM´).AsInteger := DayOf( DataFinal );
Query.Open;
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)