2

読み取り専用アクセスでリモートOracleデータベースからデータを読み取っています。そして、ある時間枠の間にすべてのデータを照会したいと思います。私は実際に深夜から現在の時刻までの間にクエリを実行したかったのです。だから私が使っていたクエリ:

TO_DATE(to_char(sysdate, 'MM-dd-yyyy')||'00:00:00','MM-dd-yyyy HH24:MI:SS' ) 
AND 
TO_DATE(to_char(sysdate, 'MM-dd-yyyy HH24:MI:SS'),'MM-dd-yyyy HH24:MI:SS' ) 

しかし、クエリ

 select TO_DATE(to_char(sysdate, 'MM-dd-yyyy HH24:MI:SS'),'MM-dd-yyyy HH24:MI:SS' ) from dual

時間ではなく、 2012年4月18日のみを返しています。どうすれば時間も取れますか?

私は走っています:

ALTER SESSION SET NLS_DATE_FORMAT='DD-MON-YYYY HH24:MI:SS';

しかし、私はこの問題を克服するために他の方法でこれを毎回実行したくないですか?

4

1 に答える 1

5

あなたが見るものは実際にそこにあるものではありません。
Oracleは、日付を表す数値として日付を保持し、クエリ時の表示方法はNLSパラメータによって異なります。
時間が見えないからといって、時間がないわけではありません。

あなたの質問に関しては、私はこのようなことをします:

... BETWEEN trunc(sysdate) AND sysdate

日付を文字列にキャストしてから、同じ形式の日付に戻すことには意味がありません...

于 2012-04-18T05:03:18.217 に答える