sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan kan jeg indsætte tidsstempel med tidszone i postgresql med forberedt erklæring?

Det grundlæggende problem er, at en java.sql.Timestamp ikke indeholder tidszoneinformation. Jeg tror, ​​det altid antages at være "lokal tidszone".

En løsning, jeg kan komme i tanke om, er ikke at bruge en parameter i en PreparedStatement, men en tidszone i SQL:

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

En anden mulig løsning kunne være at sende en korrekt formateret streng til en PrepareStatement, der bruger 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. Wierd og irriterende fejl:Kald til udefineret funktion mysql_query()

  2. Bedste tilgang til at fjerne tid en del af datetime i SQL Server

  3. yii-relation for fremmednøgler med flere kolonner

  4. Sådan kombineres to SQL-forespørgsler med forskellige ORDER BY-klausuler