Oracle SQL查询 - 即使查询条件正确,也不会产生任何结果

时间:2014-07-31 11:43:22

标签: sql oracle10g

我的Oracle SQL查询遇到了一个奇怪的问题,我的查询如下:

select * 
from user e 
where  e.year= 2014 and e.user =305 and e.usercat =22 and e.datereg= '25/07/2014'

当选择整个内容时,我可以找到这个特定用户,但是一旦我将 datereg 列添加到查询中,它就不会给我任何结果(0行)!! < / p>

我对此用户的 datereg 列的值有问题,而且其他用户没有问题(当我更改 datereg 值时)。

请问好吗?

2 个答案:

答案 0 :(得分:3)

我假设datereg的类型为date。

所以标准应该是:

e.datereg = to_date('25/07/2014','DD/MM/YYYY')

如果datereg还有一个时间部分,请尝试

trunc(e.datereg) = to_date('25/07/2014','DD/MM/YYYY')

这使我得到了与戈登相同的解决方案:)

答案 1 :(得分:2)

当您有时间组件时,通常会发生这种情况。尝试将逻辑更改为:

trunc(e.datereg) = '25/07/2014'

编辑:

您的版本失败,因为带有时间的日期不等于没有时间的日期。这种情况一直发生在使用sysdate进行比较时,to_date()有一个时间组件。

如果需要,请使用trunc(e.datereg) = to_date('2014-07-25', 'YYYY-MM-DD') 作为日期常量。我会一直使用ISO标准格式:

trunc(e.datereg) = '25-07-2014'

您还可以使用默认日期格式:

NLS_DATE_FORMAT

但是,这可能会受到国际化设置的影响。

编辑II:

默认情况下,我指的是&#34;默认&#34;值trunc(e.datereg) = DATE '2014-07-25' 。最好明确地进行转换。关于日期常量的使用,Oracle非常documented。我想我现在更喜欢:

{{1}}