在PL / SQL中的2个日期/时间之间没有给出预期的答案

时间:2012-12-04 11:38:36

标签: oracle plsql oracle10g

我在Oracle 10g上的PL / SQL中有一个不符合我的想法的查询。我百分百肯定我做的事情很傻,所以我很抱歉..这就是:

我在表格中有一些数据如下:

enter image description here

然后我去查询但是使用了time元素,如下所示:

select * from dw_time
where createdtime > to_date('2012/04/12 03:06:00', 'yyyy/mm/dd hh24:mi:ss')

执行此操作时,我们会返回包含图像03:05 AM中行的记录。所以我认为这是to_date函数:

select  to_date('2012/04/12 10:24:00', 'yyyy/mm/dd hh:mi:ss')
from dual;

results

现在我完全感到困惑,因为它清楚地知道这是一个时间。所以我再试一次:

select * from dw_time
where createdtime > to_date('2012/04/12 03:06:00', 'yyyy/mm/dd hh24:mi:ss')

enter image description here

正如您所看到的,它完全忽略了时间组件!在这一点上,我认为是时候向这里的大师们询问了!

非常感谢

麦克

2 个答案:

答案 0 :(得分:1)

您的表'12 / 4/2012'是否可能意味着2012年12月4日,并且查询以MM / DD / YYYY格式输出?

答案 1 :(得分:0)

查看数据库输出日期格式 - 它的MM / DD / YYYY - 您可以在输出中看到它:

 select  to_date('2012/04/12 10:24:00', 'yyyy/mm/dd hh:mi:ss') from dual;

因此请将您的选择更改为:

select * from dw_time where createdtime > to_date('2012/12/04 03:06:00', 'yyyy/mm/dd hh24:mi:ss')

您可以通过此查询查看日期输出格式:

select * from nls_session_parameters where parameter = 'NLS_DATE_FORMAT';

您可以通过以下方式更改日期输出格式:

alter session set NLS_DATE_FORMAT='DD/MM/YYYY HH24:MI:SS';