2011-12-05 4 views
2

タイムスタンプが1日を超えるテーブルのすべての値を削除するJPQL文を作成しようとしています。今現在私は、現在の時刻より古いすべての値を削除する作業ステートメントを持っていますが、それを修正して1日より古いものを削除する必要があります。タイムスタンプが1日以上の値を削除するJPQL

Query q = em.createQuery("DELETE FROM Statustable t WHERE t.ts < CURRENT_TIMESTAMP"); 

私は私のような何かを行うことができるようにCURRENT_TIMESTAMP値を操作する方法については、JPAのAPIを検索しようとしてきた「(CURRENT_TIMESTAMP -1)」へ:私はこの文を変更するにはどうすればよい

「1日より古い」と表示されます。私は構文が間違っていることを知っていますが、私は何をしようとしているのか理解するのに役立ちます。 JPAの

答えて

7

日付関数は非常に限られているが、あなたの問題は、Javaの現在の日付に1日をsubstractingことで簡単に解決して、パラメータ化クエリを使用することができます。

Date yesterday = DateUtils.addDays(new Date(), -1); 
Query q = em.createQUery("DELETE FROM Statustable t WHERE t.ts < :yesterday"); 
q.setParameter("yesterday", yesterday); 
+0

どうやら私は追加しませんよクエリの実行中に提供されたパラメータのリストに昨日クエリ引数が見つかりませんでした。 – Randnum

+0

パラメータを設定する例については、私の編集を参照してください。 –

+0

adamındibisin。 :) いい答えだ.. – ozgur

関連する問題