0

外部データベースを使用していますが、クエリでデータベース固有の関数を使用できません。

startdateとして保存されbigintUNIX タイムスタンプ(エポックからのミリ秒) です。

したがって、クエリではミリ秒を無視します。

WHERE ma.conversation.room IS NULL AND (ma.conversation.startdate >= :startDate AND ma.conversation.startdate <= :endDate)

そして、私のメソッドはパラメータを次のように設定します

.setParameter("startDate", startDate.getTime())
.setParameter("endDate", endDate.getTime())

これが非常に悪い考えであることはわかっていますが、データベースを変更することはできません。

テストで奇妙な結果が得られた理由がわかりません。たとえば、これは NamedQuery の私のパラメーターです。

QUERY 開始日:134 904 315 5000、終了日: 134 904 902 2000

リストの結果を印刷すると、次のようになります。

クエリ結果: startdate=2013-10-01 01:50:23, startdate time=138 058 502 3863 ......

そのクエリがこの結果をもたらすのはなぜですか??

  1. 138 058 502 3863 >= 134 904 315 5000 (真)
  2. しかし 138 058 502 3863 =< 134 904 902 2000 (真実ではありません! )

質問

>=and=<演算子を使用することをお勧めしますか?

4

0 に答える 0