2

SELECTクエリで日付とタイムスタンプを比較する必要があります。通常、これは他のほとんどのDBプラットフォーム(MySQL、MSSQL、Oracleなど)でサポートされていますが、Derbyでは次のエラーがスローされます。

原因:java.sql.SQLSyntaxErrorException:「DATE」と「TIMESTAMP」の比較はサポートされていません。タイプは比較可能でなければなりません。文字列タイプにも一致する照合が必要です。照合が一致しない場合、考えられる解決策は、オペランドをキャストしてデフォルトの照合に強制することです(たとえば、SELECT tablename FROM sys.systables WHERE CAST(tablename AS VARCHAR(128))='T1')

SQLクエリを変更できないため、CASTを使用したくありません。これはDerbyのバグで、いつか修正される予定ですか?現在、Derby10.8.2.2を使用しています。

ありがとう!

4

2 に答える 2

0

Java プログラムから接続している場合、さまざまな getxxx() メソッドを使用してタイムスタンプの特定の部分を取得できます (これらは実際には Java.util.date から継承されます)。

ドキュメントを参照してくださいhttp://docs.oracle.com/javase/7/docs/api/java/util/Date.html

getDate()、getDay() getHour().... メソッドを確認します。

于 2012-08-16T09:27:18.860 に答える
-1

おそらく、いずれかのテーブルで VIEW を定義し、その VIEW に CAST を含めることができます。そうすれば、実際のクエリを変更する必要はありません。ビューに反するため、そのようにキャストが含まれます。

于 2012-06-14T01:17:15.843 に答える