Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

JOSE MARIA

[Resolvido] Converter data mysql/delphi

Recommended Posts

bom dia...estou quebrando a cabeça com o formato de datas no mysql, tenho um sistema em delphi/mysql e estou fazendo uma pesquisa por datas(datainicio e datafim) usando 2 datetime,1 botao pesquisar,e 1 sair.Bom estou pesquisando as contas a receber no periodo, ou seja o q vai vencer em determinado periodo...fiz uma consulta no banco e este busca somente se eu usar o formato '2011/03/01' and '2011/03/31, mas preciso do formato brasileiro ex: 01/03/2011 a 31/03/2011, na tabela esta cadastrado com o formato de data dd/mm/yyyy, pois usei mascara de dados padrao 00/00/0000, mas o mysql nao aceita o formato brasileiro, entao faço a pesquisa e retorna todos os debitos, nao busca a data corretamente...preciso converter dentro do delphi ou no banco nao sei...alguem pode me ensinar como fazer isto? Codigo do botao pesquisar:

 

With Dmpedidos.ADOQueryrecperiodo do

Begin

Close;

Sql.Clear;

Sql.Add('Select * From Contasreceber');

Sql.Add('Where contasreceber.quitacao is null and Vencimento>=:Data1 And Vencimento<=:Data2');

Parameters.ParamByName('data1').Value:=datetime1.DateTime;//ja tentei formatdatetime e nada...

Parameters.ParamByName('data2').Value:=dateTime2.DateTime;

Open;

 

aguardo retorno, pois estou com este sistema parado, preciso criar outras consultas com datas,mas preciso saber como fazer....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você criou os campos no MySQL sendo de qual tipo?

 

Eu tenho uma gambiarra MOR aqui comigo que converte um DateTime para TimeStamp (casteado como string)

 

Function DateTimeToStringTimeStamp(Data : TDateTime) : String;
var
 Aux : String;
begin
 Aux     := IntToStr(YearOf(Data)) + '-';
 Aux     := Aux + IntToStr(MonthOf(Data)) + '-';
 Aux     := Aux + IntToStr(DayOf(Data)) + ' ';
 Aux     := Aux + IntToStr(HourOf(Data)) + ':';
 Aux     := Aux + IntToStr(MinuteOf(Data)) + ':';
 Result  := Aux + IntToStr(SecondOf(Data));
end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você criou os campos no MySQL sendo de qual tipo?

 

Eu tenho uma gambiarra MOR aqui comigo que converte um DateTime para TimeStamp (casteado como string)

 

Function DateTimeToStringTimeStamp(Data : TDateTime) : String;
var
 Aux : String;
begin
 Aux     := IntToStr(YearOf(Data)) + '-';
 Aux     := Aux + IntToStr(MonthOf(Data)) + '-';
 Aux     := Aux + IntToStr(DayOf(Data)) + ' ';
 Aux     := Aux + IntToStr(HourOf(Data)) + ':';
 Aux     := Aux + IntToStr(MinuteOf(Data)) + ':';
 Result  := Aux + IntToStr(SecondOf(Data));
end;

Tipo do Campo = Date;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou adaptar minha gambiarra:

 

Function ConverteData(Data:TDate) : String;
begin
 Result := IntToStr(YearOf(Data)) + '/' + IntToStr(MounthOf(Data) + '/' + IntToStr(DayOf(data));

 

Para usar:

	With Dmpedidos.ADOQueryrecperiodo do
	Begin
     Close;
     Sql.Clear;
     Sql.Add('Select * From Contasreceber');
     Sql.Add('Where contasreceber.quitacao is null and Vencimento>=:Data1 And Vencimento<=:Data2');
     Parameters.ParamByName('data1').Value:=ConverteData(datetime1.DateTime);//ja tentei formatdatetime e nada...
     Parameters.ParamByName('data2').Value:=ConverteData(dateTime2.DateTime);
     ShowMessage(SQL.Text);
     Open;
   end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou adaptar minha gambiarra:

 

Function ConverteData(Data:TDate) : String;
begin
 Result := IntToStr(YearOf(Data)) + '/' + IntToStr(MounthOf(Data) + '/' + IntToStr(DayOf(data));

 

Para usar:

	With Dmpedidos.ADOQueryrecperiodo do
	Begin
     Close;
     Sql.Clear;
     Sql.Add('Select * From Contasreceber');
     Sql.Add('Where contasreceber.quitacao is null and Vencimento>=:Data1 And Vencimento<=:Data2');
     Parameters.ParamByName('data1').Value:=ConverteData(datetime1.DateTime);//ja tentei formatdatetime e nada...
     Parameters.ParamByName('data2').Value:=ConverteData(dateTime2.DateTime);
     ShowMessage(SQL.Text);
     Open;
   end;

esta dando erro ao executar na linha da funçao:

Result := IntToStr(YearOf(Data)) + '/' + IntToStr(MounthOf(Data) + '/' + IntToStr(DayOf(data);

 

[Error] contasreceberperiodo.pas(122): Undeclared identifier: 'YearOf'

[Error] contasreceberperiodo.pas(122): Undeclared identifier: 'MounthOf'

[Error] contasreceberperiodo.pas(122): Undeclared identifier: 'DayOf'

 

aguardo retorno como proceder..desde ja agradeço pela atençao..abraços..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloca a Unit DateUtils

beleza..agora deu certo...acrescentei 2(dois) parenteses na linha da funçao e tirei a linha "showmessage(slq.teste), pois assim que executava a funcao mostrava o codigo sql do query...Agora ta funcionando beleza...Obrigadoooo.valeu mesmo...Depois.. posto uma duvida para imprimir os dados da venda beleza..abraço..

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.