sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur kan jag infoga tidsstämpel med tidszon i postgresql med förberedd sats?

Det grundläggande problemet är att en java.sql.Timestamp inte innehåller tidszonsinformation. Jag tror att det alltid antas vara "lokal tidszon".

En lösning jag kan tänka mig är att inte använda en parameter i en PreparedStatement, utan en tidszon bokstavlig i SQL:

update foo
  set ts_col = timestamp with time zone '2012-08-24 14:00:00 +02:00'`;

En annan möjlig lösning kan vara att skicka en korrekt formaterad sträng till en PrepareStatement som använder 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");


  1. Hur man söker efter ny linje char i oracle table?

  2. I PostgreSQL, konstig fråga om citextprestanda?

  3. FÖRSÖK CATCH med länkad server i SQL Server 2005 fungerar inte

  4. Hur många användare har tillgång till support?