2015-01-07 60 views
0

下面的查询给了我两个不同的oracle数据库两个不同的结果。 (我不知道的数据库版本)查询to_date问题

我想问一下,如TO_DATE函数因数据库版本而异?

select * from ACC WHERE CHANGE = TO_DATE('01/02/2015','MM/DD/YY'); 

请注意,我只=<>做工精细面临的问题。

在1分贝:此查询是给予1个结果

在2分贝:此查询是给予0的记录。

在DB:变化值是02-JAN-14

+1

什么是CHANGE列的类型DATE? – hkutluay

+0

是的,它的类型是DATE – VJS

回答

1

据我所知,to_date()并没有改变。更有可能的是,您在列change上有一个时间组件,这可以防止=发挥作用。试试这个:

select * 
from ACC 
where trunc(CHANGE) = TO_DATE('01/02/2015','MM/DD/YY'); 

或者说,我怎么会喜欢写这样的:

where change >= DATE '2015-01-02' and 
     change < (DATE '2015-01-02') + 1 

使用date关键字,您可以使用ISO标准格式。该版本还允许使用change列中的索引。

+0

trunc正在工作。但是我在两个数据库表值中都看不到时间分量。我正在使用oracle sql开发人员。 – VJS

+0

@vjs。 。 。您可以使用'to_char()'将该值转换为字符串并查看时间组件。 –

+0

我确实从....中选择了to_char(更改),但在db表值 – VJS

0

如果它们在同一台服务器上很奇怪。如果您位于两台不同的服务器上,请验证服务器的日期格式是否相同。

您可以在NLS下的设置中看到它