title: How to do a timestamp comparison with JPA query?
body: <p>We need to make sure only results within the last 30 days are returned for a JPQL query. An example follows:</p>
  
  <pre><code>Date now = new Date();
  Timestamp thirtyDaysAgo = new Timestamp(now.getTime() - 86400000*30);
  
  Query query = em.createQuery(
    "SELECT msg FROM Message msg "+
    "WHERE msg.targetTime &lt; CURRENT_TIMESTAMP AND msg.targetTime &gt; {ts, '"+thirtyDaysAgo+"'}");
  List result = query.getResultList();</code></pre>
  
  <p>Here is the error we receive:</p>
  
  <pre>&lt;openjpa-1.2.3-SNAPSHOT-r422266:907835 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: An error occurred while parsing the query filter 'SELECT msg FROM BroadcastMessage msg WHERE msg.targetTime &lt; CURRENT_TIMESTAMP AND msg.targetTime > {ts, '2010-04-18 04:15:37.827'}'. Error message: org.apache.openjpa.kernel.jpql.TokenMgrError: Lexical error at line 1, column 217.  Encountered: "{" (123), after : ""</pre>
  
  <p>Help!</p>