मूल समस्या यह है कि java.sql.Timestamp में समयक्षेत्र की जानकारी नहीं होती है। मुझे लगता है कि इसे हमेशा "स्थानीय समयक्षेत्र" माना जाता है।
समाधान पर मैं सोच सकता हूं कि एक रेडीस्टेडमेंट में पैरामीटर का उपयोग नहीं करना है, लेकिन एसक्यूएल में एक टाइमज़ोन शाब्दिक है:
update foo
set ts_col = timestamp with time zone '2012-08-24 14:00:00 +02:00'`;
एक अन्य संभावित समाधान यह हो सकता है कि to_timestamp():
का उपयोग करने वाले एक तैयार स्थिति में उचित रूप से स्वरूपित स्ट्रिंग को पास किया जाए।String sql = "update foo set ts_col = to_timestamp(?, 'yyyy-mm-dd hh24:mi:ss')";
PreparedStatement pstmt = connection.prepareStatement(sql);
pstmt.setString(1, "2012-08-24 14:00:00 +02:00");