我正在从远程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';
但我不想每次都以任何其他方式运行此问题来解决这个问题吗?
答案 0 :(得分:5)
你所看到的并不是真正存在的东西
Oracle将日期作为重新编号的数字保存,并在查询时查看它的方式取决于您的NLS参数。
你没有看到时间的事实并不意味着没有时间。
至于你的查询,我会做这样的事情:
... BETWEEN trunc(sysdate) AND sysdate
我认为将Date转换为字符串然后返回具有相同格式的日期没有用...