如何在Java中的Postgres SQL中获取两个Timestamp之间的区别

时间:2016-08-15 13:53:49

标签: java postgresql hibernate

 Query query = session.createSQLQuery("SELECT ((extract (epoch from (end_time::timestamp - start_time::timestamp))))::integer from Trip_Details where td_id = "+transacId+" ");

我正在尝试此查询来获取两个时间戳之间的差异,即start_time,stop_time。

但低于异常

ERROR: stderr - org.hibernate.QueryException: Not all named parameters have been set: [:timestamp, :integer] [SELECT ((extract (epoch from (end_time::timestamp - start_time::timestamp))))::integer from Trip_Details where td_id = 1 ]

它在postgres的PG管理控制台上工作正常,并以整数格式输出202秒。

请帮我跟踪错误并解决。 在此先感谢

1 个答案:

答案 0 :(得分:0)

我怀疑双引号对你不好。 Java之前的冒号用于设置变量。我假设您将代码更改为:

Query query = session.createSQLQuery("SELECT cast((extract (epoch from (cast(end_time as timestamp)- cast(start_time as timestamp)))) AS integer ) from Trip_Details where td_id = "+transacId+" ");

它应该开始工作......