2010-05-11 77 views
6

我需要更新Postgres(8.3)數據庫中表中的某些時間戳列。PostgreSQL - 綁定變量和日期添加

我的查詢(簡體)是這樣的:

update table1 set dateA = dateA + interval '10 hours' where id = 1234; 

這是一個腳本的一部分,有很多的更新,所以我的選擇是使用綁定變量,而不是要建的查詢字符串每一次。這意味着我的查詢變爲:

update table1 set dateA = dateA + interval '? hours' where id = ?; 

當我這樣做時,抱怨是我提供了2個綁定變量,當只需要一個時。

如果我嘗試把引號外?

update table1 set dateA = dateA + interval ? ' hours' where id = ?; 

我得到:

... syntax error at or near "' hours'" 

看起來好像查詢被解釋爲

... dateA = dateA + interval '10' ' hours' ... 

我無法在文檔中找到任何幫助...任何建議?

感謝

回答

8

試試這個:

update table1 set dateA = dateA + ((interval '1 hours') * ?) where id = ?; 

或者這樣:

update table1 set dateA = dateA + cast(? || ' hours' as interval) where id = ?; 
+0

感謝 - 無論是太明顯了! – azp74 2010-05-11 07:10:35