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

在Postgres的SQL 2個時間戳之間的區別我想這個查詢來獲取之間的兩個時間戳即START_TIME,stop_time的差異中。如何獲得Java中

但得到例外下面

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秒。

請幫我找出錯誤並解決它。 在此先感謝

+0

可你'查詢查詢=執行Session.createSQLQuery(「SELECT((提取物(從(END_TIME ::時間戳時代 - start_time :: timestamp)))):: Trip_Details中的整數,其中td_id ='+ transacId +'');'in Java?.. –

回答

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+" "); 

應該開始工作......