JPA查询将时间戳与偏移量与系统时间进行比较

时间:2016-04-06 21:40:29

标签: java sql jpa

我有几列,其中两列是

@Column(name = "time")
private Timestamp time = null;

@Column(name = "duration")
private long durationinMin = -1;

我要求执行简单的JPA查询为“select * from table where(time + durationinMin)< = SYSDATE”

有一种简单的方法吗?我们应该能够在所有数据库服务器上运行它。

2 个答案:

答案 0 :(得分:0)

使用JPA原生查询:

long t=time.getTime();
long m=durationinMin*60*1000;
Timestamp processedTimestamp = new Timestamp(t+m);

Query query = em.createNativeQuery("SELECT * FROM yourEntityTable WHERE ? <= SYSDATE", YourEntity.class);  
query.setParameter(1, processedTimestamp, TemporalType.TIMESTAMP);
List<YourEntity> resultsList = (List<YourEntity>) query.getResultList();

答案 1 :(得分:0)

JPQL对日期的操作有限,基本上是获取时间,日期或日期时间。

functions_returning_datetime:= CURRENT_DATE | CURRENT_TIME | CURRENT_TIMESTAMP

参考:http://www.appcoda.com/ios-programming-sidebar-navigation-menu/