JDBC与LIKE不一致

JDBC与LIKE不一致,jdbc,sql-like,Jdbc,Sql Like,我是JDBC新手,在执行一些查询时,我得到了一个不一致的结果 如果我在SQLDeveloper(连接到Oracle数据库)中执行此查询,我将得到4个结果 SELECT * FROM someTable1 some1 JOIN someTable2 some2 on (some1.some_id= some2.other_id) WHERE some2.some_date LIKE '01/01/01' OR some2.some_date IS NULL 然后,我从java中的属性文件加载相

我是JDBC新手,在执行一些查询时,我得到了一个不一致的结果

如果我在SQLDeveloper(连接到Oracle数据库)中执行此查询,我将得到4个结果

SELECT *
FROM someTable1 some1 
JOIN someTable2 some2 on (some1.some_id= some2.other_id)
WHERE some2.some_date LIKE '01/01/01' OR some2.some_date IS NULL
然后,我从java中的属性文件加载相同的查询并执行查询,得到0个结果。。。有人知道为什么会这样吗?我首先怀疑房地产价值中有单引号,但我不知道


提前谢谢,请原谅我的英语不好!:)

查询不包含任何可能混淆Java、属性加载器或JDBC的特殊字符,因此您应该在SQL Developer和JDBC中获得完全相同的结果

事实上,SQLDeveloper是用Java编写的,所以它使用JDBC来执行查询

在执行查询之前,请将查询打印到控制台,以确保100%的代码执行您心目中的查询

接下来,您应该检查
some\u date
的类型
LIKE
仅针对字符串类型(
VARCHAR
和类似类型)定义,不针对日期/时间类型

Oracle有一组帮助函数用于生成日期/时间类型的查询,例如:

some_date = to_date( '01/01/2001','mm/dd/yyyy')

第二个查询从列中删除小时、分钟、秒等,并仅比较天、月和年


注意:始终使用4位数的年份以避免各种奇怪的问题。

什么是“some_date”列的类型?据我所知,类型是date…字符串“01/01/01”可能由于不同的区域设置/时间设置而有不同的解释。改为使用特定格式的日期。另外,为什么要使用LIKE来比较日期?感谢大家的回复:)我尝试在没有LIKE运算符的情况下更改查询,但这样在sql developer上执行时,也得到了0个结果..:(事实上,存储的是“01/01/01”日期。如果数据类型是
DATE
,则它不会像
01/01/01
那样存储,这只是表示形式,取决于服务器和/或客户端的区域设置。很抱歉,日期格式错误(
01
要求
mm
,而不是
mmm
).请再试一次。嗨!成功了!:)谢谢你,亚伦。我不得不改为日期('01/01/01','mm/dd/yyyy'),年底是全年。。我不知道为什么当我看表中的日期时,它们在一年中只有两位数。。。但改变这一切都奏效了!谢谢大家!:)这可能是因为SQL Developer的首选项中配置了默认的日期格式化程序。
TRUNC(some_date, 'DAY') = to_date( '01/01/2001','mm/dd/yyyy')