PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como posso inserir timestamp com fuso horário no postgresql com instrução preparada?


O problema básico é que um java.sql.Timestamp não contém informações de fuso horário. Eu acho que é sempre assumido como "fuso horário local".

A solução que consigo pensar é não usar um parâmetro em um PreparedStatement, mas um literal de fuso horário em SQL:
update foo
  set ts_col = timestamp with time zone '2012-08-24 14:00:00 +02:00'`;

Outra solução possível poderia ser passar uma String formatada corretamente para um PrepareStatement que usa 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");