0

我正在使用 Delphi 7 和 Titan BTrieve 打开 Pervasive Table。

它是一个 TtbTable 组件。

我正在尝试使用我的代码在 TimeStamp 字段上应用过滤器,如下所示:

    Date:=InputDate;
    DateString:=FormatDateTime('DD/MM/YYYY HH:NN:SS', InputDate);
    Table1.Filter:='UPDATEDON > '+chr(39)+DAteString+chr(39);
    Table1.Filtered:=True;

问题是过滤结果不正确。它返回与过滤条件不匹配的记录。

4

3 回答 3

1

Table1.Filter,过滤 TDataSet 中的数据,而不是 btrieve/pervasive 中的数据。

问题是字符串格式的日期...您必须使用格式 YYYY-MM-DD 而不是 DD-MM-YYYY 因为字符串比较。

在字符串中比较 17-06-2012 大于 16-07-2012, (17>16)

于 2012-07-17T12:02:55.867 回答
0

从外观上看,您是在比较字符串,而不是日期。

于 2012-07-15T13:44:49.210 回答
0

您使用的是哪个版本的 PSQL?UPDATEDON 字段是否定义为 Btrieve 数据库中的时间戳?如果它是时间戳,则值存储在 8 字节无符号值中,表示自公历 0001 年 1 月 1 日以来的间隔秒(10^-7 秒),协调世界时 (UTC)。它不存储为字符串。

Btrieve / PSQL 以 'YYYY-MM-DD' 格式存储日期。

UPDATEDON 字段中的值是什么样的?要将其用作过滤器,您需要确保过滤器值看起来相同。

于 2012-07-15T16:35:02.500 回答