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

只返回18-APR-12不是时间。我怎么也有时间?

我在跑步 :

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

但我不想每次都运行这个来解决这个问题?

4

1 回答 1

5

你看到的并不是真实存在的。
Oracle 将日期保存为代表日期的数字,查询时查看日期的方式取决于 NLS 参数。
你看不到时间的事实并不意味着没有时间。

至于你的查询,我会做这样的事情:

... BETWEEN trunc(sysdate) AND sysdate

我认为将 Date 转换为字符串然后再转换为具有相同格式的 Date 没有用...

于 2012-04-18T05:03:18.217 回答