2010-05-11 13 views
6

Postgres (8.3) veritabanındaki bir tabloda bazı zaman damgası sütunlarını güncellemem gerekiyor.PostgreSQL - değişkenleri ve tarih eklerini bağlama

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

Bu senaryonun bir parçasıdır ve bir çok yani benim tercih bağlama değişkenleri kullanmaktır güncellemek için yerine sorgu dizesi oluşturmak zorunda kalmak var:

Benim sorgu (basitleştirilmiş) şu şekilde görünecektir her seferinde Bu benim sorgu hale gelir:

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

Bunu yaptığınızda, şikayet tek gerektiğinde ben 2 bağlama değişkenleri temin ettik olmasıdır.

Ben tırnak işareti dışında ? koymak çalışırsanız:

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

alıyorum:

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

sorgu

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

olarak yorumlanır oldu gibi gösteriyor Herhangi bir öneride yardım etmek için dokümanlarda hiçbir şey bulamıyorum.

Teşekkür

cevap

8

bu deneyin:

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

Ya da bu:

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

Teşekkür - hem çok bariz !!! – azp74