微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用Delphi 2007从Firebird中的Timestamp字段获取毫秒值

如何解决如何使用Delphi 2007从Firebird中的Timestamp字段获取毫秒值

我不知道Firebird是否真正支持毫秒,但我知道Delphi 2007的InterBase驱动程序不支持毫秒。这是因为InterBase在其C API中不返回毫秒;尽管InterBase将DateTimes存储为毫秒级精度,但是InterBase API在不包含毫秒字段的C TM结构中返回时间。因此,为InterBase设计的dbExpress驱动程序将不支持功能。因此,您将需要最少更改驱动程序,前提是Firebird实际上完全支持此驱动程序。

解决方法

我有一个Firebird数据库(在服务器版本2.1.3上运行),并且正在使用DBExpress对象(使用Interbase驱动程序)与Delphi
2007进行连接。

我在数据库中的一张表看起来像这样

CREATE TABLE MYTABLE
(
  MYDATE Timestamp NOT NULL,MYINDEX Integer NOT NULL,...
  Snip
  ...
  PRIMARY KEY (MYDATE,MYINDEX)
);

我可以将其添加到表中,然后在Flame Robin中将timestamp字段显示为毫秒值。

但是当我select * from MYTABLE在表上执行全选()时,我无法获得毫秒值,因为它始终返回为000。

因为它是主键的一部分,所以这会引起严重的问题(不幸的是,我没有设计表并且没有权限对其进行更改)。

我尝试了以下方法来获取毫秒值:

sql1.fieldbyname('MYDATE').AsDateTime;
sql1.fieldbyname('MYDATE').AsSQLTimeStamp;
sql1.fieldbyname('MYDATE').AsStirng;
sql1.fieldbyname('MYDATE').AsFloat;

但是它们在格式化时都返回14/09/2009 14:25:06.000。

如何从时间戳中检索毫秒?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。