1

誰かが助けてくれるなら事前に感謝します...これは私を夢中にさせています!

私は次のようなクエリがあります

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;

元のクエリには他に2つのパラメータがあり、それらが正しい順序になっていることを確認しました。できるだけ多くの変数を削除するために、この形式に簡略化しました。データプロバイダーには、Oracle 11g、Visual Studio 2010、およびOracleODP.Netを使用しています。

なぜこれが失敗するのか、私は一生理解できません!

4

2 に答える 2

2

接続の問題を解消するために、句から日付の制限を削除するとWHERE、vb.net にデータが返されますか?

その場合、日付文字列の解析の問題である可能性が最も高いです。サーバーの NLS 設定を確認するか、次のような言語に依存しない日付形式を使用してみてください。

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

日付を削除してもデータが返されない場合は、ほとんどの場合、クエリの問題ではなく、データベースへの接続に問題があります。SQL Developerと同じスキーマに接続していますか?

于 2013-02-21T22:57:28.030 に答える
1

>= date'2013-02-21' SQL DEV とあなたのコードで動作しますか? もしそうなら、暗黙的な文字から日付への変換に問題があります - これはセッション設定に依存します...

于 2013-02-21T22:57:19.513 に答える