Invertendo datas...???
Boa noite gostaria de saber se alguem tem uma função que eu possa usar para inverter uma data.
de: dd/mm/aaaa 00:00:00
para: aaaa-mm-dd 00:00:00
para poder fazer uma consulta numa tabela do MySQL ...
tipo, o Delphi tem alguma função de substring que eu possa usar??
Desde já muito obrigado!
Raimundo Farias
de: dd/mm/aaaa 00:00:00
para: aaaa-mm-dd 00:00:00
para poder fazer uma consulta numa tabela do MySQL ...
tipo, o Delphi tem alguma função de substring que eu possa usar??
Desde já muito obrigado!
Raimundo Farias
Raimundo_farias
Curtidas 0
Respostas
Maicongabriel
04/04/2005
Utilize a função [b:e3b3cb709e]FormatDateTime()[/b:e3b3cb709e]. Você deve passar a mascara de formatação e o valor para o campo data. Ela retorna uma string.
Exemplo:
Exemplo:
var data : TDateTime; sDt : String; begin data := Now; sDt := FormatDateTime(´yyyy-mm-dd hh:nn:ss´, data); end;
GOSTEI 0
Raimundo_farias
04/04/2005
Muito Obrigado!
GOSTEI 0
Raimundo_farias
04/04/2005
meu problema se agravou...
tenho dois campos de mascara para receber um intervalo de datas tipo:
DataInicial.Text e DataFinal.Text
e quero fazer uma busca com esse intervalo.. tambem não sei se a SQL está correta mais eu to fazendo assim e ñ retorna nada...
tirando a SQL que eu não sei se é o problema. Eu acho q deve ser a converção de tipos pois na minha tabela o campo é DateTime e o Edit da mascara só fornece a data e eu concateno assim:
Espero que alguem possa me ajudar e que tenha sido claro em minha dúvida!
Obrigado!
tenho dois campos de mascara para receber um intervalo de datas tipo:
DataInicial.Text e DataFinal.Text
e quero fazer uma busca com esse intervalo.. tambem não sei se a SQL está correta mais eu to fazendo assim e ñ retorna nada...
with dmobjSimpi.BuscaUser do begin if Active then Close; SQL.Clear; SQL.Add(´SELECT usuarios.nome, usuarios.id, acessos.id_user, acessos.data, acessos.origem´); SQL.Add(´ FROM usuarios, acessos WHERE acessos.data BETWEEN (:dataIni) AND (:dataFim) AND usuarios.id = acessos.id_user´); SQL.Add(´ ORDER BY acessos.data DESC´); Parameters[0].Name := ´dataIni´; Parameters[0].Value := StrToDateTime(DataInicial.Text); Parameters[0].DataType := ftDateTime; Parameters[1].Name := ´dataFim´; Parameters[1].Value := StrToDateTime(DataFinal.Text); Parameters[1].DataType := ftDateTime; Open; First;
tirando a SQL que eu não sei se é o problema. Eu acho q deve ser a converção de tipos pois na minha tabela o campo é DateTime e o Edit da mascara só fornece a data e eu concateno assim:
DataIni := DataInicial.Text + ´ 00:00:00´ DataFim := DataFinal.Text + ´ 23:59:59´
Espero que alguem possa me ajudar e que tenha sido claro em minha dúvida!
Obrigado!
GOSTEI 0
Aroldo Zanela
04/04/2005
Colega,
Quando for manipular DATAS dê preferência ao DateTimerPicker da aba Win32 ao invés de Edits ou MaskEdits.
Se estiver usando parâmetros, não é necessário fazer formatação. Exemplo:
No próprio componente há uma propriedade (time) para ´Setar´ a hora. Portanto, no objeto para data iniciail, atribua o valor ´00:00:00´ é para o objeto para a data final, atribua ´23:59:39´.
Quando for manipular DATAS dê preferência ao DateTimerPicker da aba Win32 ao invés de Edits ou MaskEdits.
Se estiver usando parâmetros, não é necessário fazer formatação. Exemplo:
Qry.Close; Qry.ParamaByNames(´DataInicial´).AsDateTime := DateTimePicker1.DateTime; Qry.Open;
No próprio componente há uma propriedade (time) para ´Setar´ a hora. Portanto, no objeto para data iniciail, atribua o valor ´00:00:00´ é para o objeto para a data final, atribua ´23:59:39´.
GOSTEI 0
Raimundo_farias
04/04/2005
Ta funcionando ja só que ainda tem um problema no SQL....
a clausula BETWEEN busca em um intervalo aberto né??? tipo:
... WHERE acessos.data BETWEEN (:inicial) AND (:final)
desse jeito se eu informar 04/04/2005 e 04/04/2005 ou 03/04/2005 e 04/04/2005 ... quer dizer so os acessos de hoje ele não retorna nada... se eu informar 04/04/2005 e 05/04/2005 funciona.
tem como eu mudar isso???
a clausula BETWEEN busca em um intervalo aberto né??? tipo:
... WHERE acessos.data BETWEEN (:inicial) AND (:final)
desse jeito se eu informar 04/04/2005 e 04/04/2005 ou 03/04/2005 e 04/04/2005 ... quer dizer so os acessos de hoje ele não retorna nada... se eu informar 04/04/2005 e 05/04/2005 funciona.
tem como eu mudar isso???
GOSTEI 0
Aroldo Zanela
04/04/2005
Colega,
Você alterou os valores da propriedade Time conforme citei anteriormente? Pode colocar um fragmento do código que você está utilizando agora?
Você alterou os valores da propriedade Time conforme citei anteriormente? Pode colocar um fragmento do código que você está utilizando agora?
GOSTEI 0
Raimundo_farias
04/04/2005
cara ta assim...
Acho que o problema ta na SQL.... se eu passar tanto a inicial como a final igual a 04/04/2005 não retorna nada...
with dmobjSimpi.BuscaUser do begin if Active then Close; SQL.Clear; SQL.Add(´SELECT usuarios.nome, usuarios.id, acessos.id_user, acessos.data, acessos.saida, acessos.origem´); SQL.Add(´ FROM usuarios, acessos WHERE acessos.id_user = usuarios.id AND acessos.data BETWEEN :dataIni AND :dataFim´); SQL.Add(´ ORDER BY acessos.data DESC´); Parameters[0].Name := ´dataIni´; Parameters[0].Value := inicial.DateTime; Parameters[0].DataType := ftDateTime; Parameters[1].Name := ´dataFim´; Parameters[1].Value := final.DateTime; Parameters[1].DataType := ftDateTime; Open; First; if not Eof then begin while not Eof do begin ListaHistorico.Cells[0,row] := Fields.Fields[0].Value; ListaHistorico.Cells[1,row] := Fields.Fields[3].Value; ListaHistorico.Cells[2,row] := Fields.Fields[4].Value; ListaHistorico.Cells[3,row] := Fields.Fields[5].Value; ListaHistorico.RowCount := ListaHistorico.RowCount + 1; Inc(row); Next; end; ListaHistorico.RowCount := ListaHistorico.RowCount - 1; end; end;
Acho que o problema ta na SQL.... se eu passar tanto a inicial como a final igual a 04/04/2005 não retorna nada...
GOSTEI 0
Raimundo_farias
04/04/2005
do outro jeito q eu fiz tambem funciona...
fica identico... mas dá o mesmo problema...
fica identico... mas dá o mesmo problema...
GOSTEI 0
Aroldo Zanela
04/04/2005
Colega,
Pressione Alt - F12 e copie o conteúdo dos objetos DateTimePicker apenas e coloque aqui para uma análise das propriedades.
Pressione Alt - F12 e copie o conteúdo dos objetos DateTimePicker apenas e coloque aqui para uma análise das propriedades.
GOSTEI 0