我使用Delphi 7和Titan BTrieve打开一个普适表。
它是TtbTable组件。
我正试图在TimeStamp字段上应用过滤器,我的代码如下:
Date:=InputDate;
DateString:=FormatDateTime('DD/MM/YYYY HH:NN:SS', InputDate);
Table1.Filter:='UPDATEDON > '+chr(39)+DAteString+chr(39);
Table1.Filtered:=True;
问题是筛选结果不正确。它返回在之前的记录。这些记录与筛选条件不匹配。
Table1.Filter,过滤TDataSet中的数据,而不是btrieve/pressive中的数据。
问题是字符串格式的日期。。。您必须使用格式YYYY-MM-DD,而不是DD-MM-YYYY,因为字符串比较。
在字符串比较中,2012年6月17日比2012年7月16日更糟,(17>16)
从外观上看,您比较的是字符串,而不是日期。
您使用的是什么版本的PSQL?UPDATEDON字段是否定义为Btrieve数据库中的时间戳?如果是时间戳,则值存储在8字节无符号值中,表示自公历协调世界时(UTC)0001年1月1日以来的七分之一秒(10^-7秒)。它不是作为字符串存储的。
Btrieve/PSQL以"YYYY-MM-DD"格式存储日期。
UPDATEDON字段中的值是什么样子的?要将其用作筛选器,需要确保筛选器值看起来相同。