在where子句中的日期条件查询不返回任何行但在SQL Developer中工作

时间:2013-02-21 22:23:29

标签: vb.net oracle

如果有人能提供帮助,请提前致谢...这让我发疯了!

我有一个像

这样的查询
select * from tranHistory where itemid = 10 and created_dttm >= '21-Feb-2012';

简单,对吧?从vb.net运行它不返回任何行。从SQL Developer运行它返回99行。我最初认为这是一个参数问题,因为查询过去看起来像

select * from tranHistory where itemid = 10 and created_dttm >= :tranHistoryDate;

在原始查询中还有另外两个参数,我验证它们的顺序正确。我将它简化为这种形式,以消除尽可能多的变量。我们正在为数据提供者使用Oracle 11g,Visual Studio 2010和Oracle ODP.Net。

我无法为我的生活弄清楚为什么会失败!

2 个答案:

答案 0 :(得分:2)

要消除连接问题,如果从WHERE子句中删除日期限制,它是否会返回vb.net中的任何数据?

如果是这样,它很可能是日期字符串解析问题。检查服务器上的NLS设置,或尝试使用与语言无关的日期格式:

and created_dttm >= TO_DATE('20120221', 'YYYYMMDD');

如果删除日期导致没有返回任何数据,那么查询几乎肯定不是问题,但是与数据库的连接存在问题。它是否连接到与SQL Developer相同的模式?

答案 1 :(得分:1)

使用 >= date'2013-02-21' 在SQL DEV和您的代码中有效吗?如果是这样,你就会遇到隐式字符到日期转换的问题 - 这取决于你的会话设置......