我有一个 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 - Firebird 的 dbExpress 驱动程序(Delphi 2010 试用版) - 时间戳不支持毫秒。
- Chau Chee Yang's - dbExpress Driver for Firebird (Delphi 2007) - 时间戳不支持毫秒。
- UpScene - InterXpress for Firebird (Delphi 2007) - 时间戳支持毫秒。
- DevArt - InterBase (Delphi 2007) 的 dbExpress 驱动程序 - 时间戳支持毫秒。