sql >> Databáze >  >> RDS >> PostgreSQL

Jak mohu vložit časové razítko s časovým pásmem do postgresql s připraveným příkazem?

Základní problém je, že java.sql.Timestamp neobsahuje informace o časovém pásmu. Myslím, že se vždy předpokládá, že jde o „místní časové pásmo“.

Na řešení, které mě napadá, je nepoužívat parametr v PreparedStatement, ale doslovný doslov časového pásma v SQL:

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

Dalším možným řešením by mohlo být předání správně naformátovaného řetězce do PrepareStatement, který používá 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. Wordpress a Drupal SSO/Jednotné přihlášení

  2. Jak funguje BIT_LENGTH() v MariaDB

  3. flask_mysqldb Odstranit FROM tabulku proměnných

  4. Indexované zobrazení údržby v prováděcích plánech