【问题标题】:How to get the millisecond value from a Timestamp field in firebird with Delphi 2007如何使用 Delphi 2007 从 firebird 中的时间戳字段中获取毫秒值
【发布时间】: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 尝试的驱动程序和结果。

【问题讨论】:

    标签: sql delphi firebird delphi-2007 dbexpress


    【解决方案1】:

    我的一位同事 (Edwin van der Kraan) 刚刚检查过:它适用于 FIBplus

    他检查了 FIBPlus 版本 6.9.6 和 Firebird 2.1.1。

    他插入了一个 current_timestamp 插入,并用FormatDateTime('dd-mm-yyyy hh:nn:ss:zzz', TestpFIBDataSetMYDATE.Value) 提取了它 然后他取回了日期和时间,包括毫秒。

    --杰罗恩

    【讨论】:

      【解决方案2】:

      我不知道 Firebird 是否真的支持毫秒,但我知道 Delphi 2007 的 InterBase 驱动程序不支持这一事实。这是因为 InterBase 在其 C API 中不返回毫秒;尽管 InterBase 将 DateTimes 存储到亚毫秒精度,但 InterBase API 在不包含毫秒字段的 C TM 结构中返回时间。因此,为 InterBase 设计的 dbExpress 驱动程序不会支持它。因此,您至少需要更改驱动程序,假设 Firebird 完全支持这一点。

      【讨论】:

      • IBExpert 可以从 InterBase 7.5.1 数据库中检索毫秒 - 但 Delphi 2009 不读取毫秒部分。是否有支持 ms 部分的较新版本的 Delphi 可用? - 见stackoverflow.com/questions/5271799/…
      【解决方案3】:

      Firebird FAQ #305 解释了如何通过简单的 varchar CAST 轻松解决此问题。

      【讨论】:

        【解决方案4】:

        存在 Firebird dbx 驱动程序(您可以尝试):

        http://sites.google.com/site/dbxfirebird/(免费)

        http://www.upscene.com/products.dbx.dbx_fb.php

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-09-22
          • 1970-01-01
          • 2013-06-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-07-26
          相关资源
          最近更新 更多