【发布时间】:2009-09-14 15:28:09
【问题描述】:
我有一个 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 中它显示时间戳字段具有毫秒值。
但是当我在表上执行全选 (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。
如何从时间戳中检索毫秒?
更新: 如果这对将来的任何人有帮助,这里是我为 DBExpress 尝试的驱动程序和结果。
- Embarcadero - dbExpress Driver for Firebird(德尔福 2010 试用版)- 时间戳不支持毫秒。
- Chau Chee Yang's - dbExpress Driver for Firebird (Delphi 2007) - 时间戳不支持毫秒。
- UpScene - InterXpress for Firebird(德尔福 2007) - 时间戳支持毫秒。
- DevArt - dbExpress Driver for InterBase (Delphi 2007) - 时间戳支持毫秒。
【问题讨论】:
标签: sql delphi firebird delphi-2007 dbexpress