0

Oracle 11g DB に end_time (timestamp(6) 型) という名前のフィールドがあります。私の要件は、現在のタイム スタンプよりも大きいレコードを取得することです。リモート DB を使用しているため、Oracle データベース サーバーの現在の時刻が必要です。

いくつかの調査の後、SYSTIMESTAMPが DB が存在するマシンの現在のタイムスタンプを返すことがわかりました。

end_time > SYSTIMESTAMP のような条件を付けただけですが、レコードはフィルタリングされません。私の終了時間はタイプタイムスタンプ(6)です。

変換関数を使用する必要がありますか? どうすれば休止状態から行うことができますか? 何か案が?

4

1 に答える 1

0

Can you further explain on "does not filter records", are too many rows in your result or to few?

Your condition looks absolutely ok:

CREATE TABLE mytable (ts TIMESTAMP(6));
INSERT INTO mytable (ts) VALUES (TIMESTAMP '2012-12-06 17:00:00');
INSERT INTO mytable (ts) VALUES (TIMESTAMP '2012-12-06 18:00:00');

SELECT SYSTIMESTAMP FROM DUAL;
 06.12.2012 17:10:38.347629000 +01:00

SELECT * FROM mytable WHERE ts > SYSTIMESTAMP;
06.12.2012 18:00:00.000000000

SELECT * FROM mytable WHERE ts < SYSTIMESTAMP;
06.12.2012 17:00:00.000000000
于 2012-12-06T16:11:42.687 に答える