1

我在 Oracle 10g 上的 PL/SQL 中有一个查询,它的行为与我想象的不同。我 100% 确定我在做一些愚蠢的事情,所以我很抱歉.. 这里是:

我在一个看起来像这样的表中有一些数据:

在此处输入图像描述

然后我去查询,但使用时间元素,如下所示:

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

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

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/04/12 03:06:00', 'yyyy/mm/dd hh24:mi:ss')

在此处输入图像描述

如您所见,它完全忽略了时间组件!在这一点上,我认为是时候在这里问大师了!

非常感谢

麦克风

4

2 回答 2

1

是否有可能在您的表中 '12/4/2012' 表示 2012 年 12 月 4 日并且查询以 MM/DD/YYYY 格式输出它?

于 2012-12-04T12:00:04.687 回答
0

查看 DB 输出日期格式 - 它是 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';
于 2012-12-04T11:52:37.010 回答