0

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;

問題は、フィルター結果が正しくないことです。フィルター条件に一致しない前のレコードを返します。

4

3 に答える 3

1

Table1.Filterは、btrieve/pervasiveではなくTDataSetのデータをフィルタリングします。

問題は文字列形式の日付です...文字列が比較されるため、DD-MM-YYYYではなく形式YYYY-MM-DDを使用する必要があります。

文字列で比較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 データベースでタイムスタンプとして定義されていますか? タイムスタンプの場合、値はグレゴリオ暦 (UTC) の 0001 年 1 月 1 日からの 7 秒 (10^-7 秒) を表す 8 バイトの符号なし値で格納されます。文字列として保存されません。

Btrieve / PSQL は日付を「YYYY-MM-DD」形式で格納します。

UPDATEDON フィールドの値はどのようなものですか? フィルターとして使用するには、フィルター値が同じであることを確認する必要があります。

于 2012-07-15T16:35:02.500 に答える