Como usar o comando FormatDateTime em um select?
Galera, tenho um select aqui mas ele da erro quando eu executo o comando, o campo que ele esta pegando é do tipo date, mas eu nao sei como que eu implemento o codigo para colocar a função FormatDateTime para converter meu código..
o codigo esta mais ou menos assim
ibquery1.close;
ibquery1.sql.clear;
ibquery1.sql.add (select * from TABELA where cod_empresa = 1 and data_lancamento between Edit1.text and edit2.text);
ibquery1.open;
logico que eu usei a concatenação para os valores que sao recebidos nos Edits....
Alguem ajuda ai? Valeeeeeeeeeu
o codigo esta mais ou menos assim
ibquery1.close;
ibquery1.sql.clear;
ibquery1.sql.add (select * from TABELA where cod_empresa = 1 and data_lancamento between Edit1.text and edit2.text);
ibquery1.open;
logico que eu usei a concatenação para os valores que sao recebidos nos Edits....
Alguem ajuda ai? Valeeeeeeeeeu
Roberto Wutke
Curtidas 0
Respostas
Marcos Oliveira
04/09/2013
Roberto, não sei se é o seu caso, mas nos meus comandos SQL que uso, coloco os campos sempre entre aspas. Porém, uso PostgreSQL.
No meu caso ficaria assim:
Att,
Marcos
No meu caso ficaria assim:
ibquery1.sql.add (select * from TABELA where cod_empresa = 1 and data_lancamento between QuotedStr(Edit1.text) and QuotedStr(edit2.text));
Att,
Marcos
GOSTEI 0
Roberto Wutke
04/09/2013
Então Marcos com os Quotedstr ele tambem dá erro, o que é estranho.... eu queria converter a data que a pessoa digitar para o formato 'dd.mm.yyyy' porque ai sim o banco reconheceria o comando
GOSTEI 0
Marcos Oliveira
04/09/2013
Outra alternativa seria usar o StringReplace para substituir a barra pelo ponto... Não é a melhor solução, mas pode funcionar.
GOSTEI 0
Ricardo Araujo
04/09/2013
caro amigo uso este cód no SQLSERVER
var
sSQL : String;
begin
sSQL := '';
sSQL := sSQL + ' SELECT * FROM TESTE ';
sSQL := sSQL + ' WHERE 1 = 1 '
sSQL := sSQL + ' and convert(date, [vencto], 103) between ';
sSQL := sSQL + ' convert(date, ' + QuotedStr(FormatDateTime('dd/mm/yyyy', edtVencimentoInicial.Date)) + ' , 103) ';
sSQL := sSQL + ' and convert(date, ' + QuotedStr(FormatDateTime('dd/mm/yyyy', edtVencimentoFinal.Date)) + ' , 103) ';
with dmDADOS do begin
cdsTeste.Close;
qTeste.SQL.Clear;
qTeste.SQL.Add(sSQL);
cdsTeste.Open;
end;
end;
pode usar este código que esta certo, só trocar o nome tabela Teste pela nome da sua tabela.
var
sSQL : String;
begin
sSQL := '';
sSQL := sSQL + ' SELECT * FROM TESTE ';
sSQL := sSQL + ' WHERE 1 = 1 '
sSQL := sSQL + ' and convert(date, [vencto], 103) between ';
sSQL := sSQL + ' convert(date, ' + QuotedStr(FormatDateTime('dd/mm/yyyy', edtVencimentoInicial.Date)) + ' , 103) ';
sSQL := sSQL + ' and convert(date, ' + QuotedStr(FormatDateTime('dd/mm/yyyy', edtVencimentoFinal.Date)) + ' , 103) ';
with dmDADOS do begin
cdsTeste.Close;
qTeste.SQL.Clear;
qTeste.SQL.Add(sSQL);
cdsTeste.Open;
end;
end;
pode usar este código que esta certo, só trocar o nome tabela Teste pela nome da sua tabela.
GOSTEI 0
Roberto Wutke
04/09/2013
Valeu Marcos, o Replace deu certinho aqui e é bem simples de fazer.
Barreto, eu posso até usar o formatdate mas ficaria muito extenso meu código sendo que seria uma consulta simples e por enquanto o replace nao esta dando erro
Caso Resolvido, Grato a Todos
Barreto, eu posso até usar o formatdate mas ficaria muito extenso meu código sendo que seria uma consulta simples e por enquanto o replace nao esta dando erro
Caso Resolvido, Grato a Todos
GOSTEI 0