PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как мога да вмъкна клеймо с часова зона в postgresql с подготвен израз?

Основният проблем е, че java.sql.Timestamp не съдържа информация за часовата зона. Мисля, че винаги се приема, че е "местна часова зона".

Решение, за което мога да се сетя, е да не използвам параметър в PreparedStatement, а литерал на часова зона в SQL:

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

Друго възможно решение може да бъде предаването на правилно форматиран низ към PrepareStatement, който използва 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. Не се поддържа квадратна скоба в името на таблица/колона?

  2. Готови ли сме за Nordic PPGDay?

  3. Изпълнете заявка въз основа на JSON, който се съхранява в колоната

  4. .NET Core регистриране в PostgreSQL DB с помощта на NLog

  5. Неочаквани резултати от SQL заявка с BETWEEN клеймца за време