PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana saya bisa memasukkan stempel waktu dengan zona waktu di postgresql dengan pernyataan yang disiapkan?

Masalah dasarnya adalah bahwa java.sql.Timestamp tidak berisi informasi zona waktu. Saya pikir itu selalu dianggap sebagai "zona waktu lokal".

Pada solusi yang dapat saya pikirkan adalah tidak menggunakan parameter dalam PreparedStatement, tetapi literal zona waktu dalam SQL:

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

Solusi lain yang mungkin adalah meneruskan String yang diformat dengan benar ke PrepareStatement yang menggunakan 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengonfigurasi PostgreSQL untuk Observabilitas

  2. PG::Error - bidang numerik meluap di Heroku

  3. Perbaiki:“operator tidak ada:integer || integer” di PostgreSQL

  4. Di mana log PostgreSQL di macOS?

  5. Pilih N Baris Dengan Nilai Campuran