Firebird com milisegundos no Delphi XE3

Firebird

18/09/2013

Olá a todos, boa noite

Gostaria de solicitar a ajuda do pessoal aí porque gostaria de fazer uma gravação de milisegundos no FB para um protótipo de um joguim de browser, vi que as novas atualizações dele funciona o SQLTimeStamp com milisegundos só que não consigo fazer funcionar...

Utilizo o Delphi XE3 e Firebird 2.5

Minha aplicação utiliza o ClientDataSet pra fazer as inserções, deleções, alterações e todas as operações de banco e já tentei as seguintes estratégias:

Gravação direta em um campo do tipo "Time":

Dessa forma saiu só "hh:mm:ss"
CREATE TABLE tabelateste(
ID integer not null primary key,
hora Time
);

CDS1.FieldByName('hora').asDateTime := time;


Gravação direta em um campo do tipo "TimeStamp"

Dessa forma gravou dia, mês, ano, hora, minuto e segundo, menos os milisegundos
CREATE TABLE tabelateste(
ID integer not null primary key,
hora TimeStamp
);

CDS1.FieldByName('hora').asSQLTimeStamp := DateTimeToSQLTimeStamp(now);


Gravação com Time em campo TimeStamp

Mesma coisa do de cima, só gravou "HH:MM:SS"
CREATE TABLE tabelateste(
ID integer not null primary key,
hora TimeStamp
);

CDS1.FieldByName('hora').asSQLTimeStamp := DateTimeToSQLTimeStamp(time);


Se alguém tiver ideias, sugestões, gostaria de uma ajuda aí

Agradeço desde já.
Mobius One

Mobius One

Curtidas 0

Respostas

Flex Ltda

Flex Ltda

18/09/2013

Dae fera! tudo bem?

Você Conseguiu resolver esse assunto?

Estou com uma solução imperrada por causa deste problema também.

Obrigado pela Ajuda.
GOSTEI 0
Eduardo Silva.

Eduardo Silva.

18/09/2013

No Delphi o DisplayFormat para campos Time ou TimeStamp é no formato: 'HH:MM:SS', assim como no IBExpert também.

Para visualizar os milissegundos é só colocar no DisplayFormat do Field como : DD/MM/YYYY HH:MM:SS:MS para Campo do Tipo TimeStamp e
HH:MM:SS:MS para o Tipo Time.

Para visualizar ou efetuar cálculos direto no Firebird, você tem que converter utilizando as funções CAST e EXTRACT.

No Insert no ClientDataSet para o Campo TimeStamp, eu faria:

CDS1.FieldByName('hora').Value := Now;
porquê o campo TimeStamp armazena Data e Hora


Se você fizer por exemplo:

select current_timestamp from rdb$database
Retorna: 22/11/2014 15:59:03

sds

Eduardo Belo
GOSTEI 0
POSTAR