2009-09-04 23 views
14

Estamos corriendo en nuestro código java con GregorianCalendar. Nos gustaría persistir en nuestra base de datos postgresql como GMT +0 en las columnas del tipo de marcas de tiempo, pero no estamos seguros de cómo hacerlo. ¿Deben estar los campos con la marca de tiempo o sin ella? ¿Por un token similar qué función de postgres de tiempo "actual" deberíamos usar current_timestamp or localtimestamp?¿Cómo uso las horas GMT en postgresql?

+0

no directamente relacionada con su pregunta, pero sólo quería demostrar que http://joda-time.sourceforge.net/ joda time es un poco más fácil de tratar. :) http://joda-time.sourceforge.net/userguide.html#TimeZones –

+0

Gracias, desafortunadamente es extremadamente difícil agregar bibliotecas a nuestro proyecto. – Adam

Respuesta

32

Comience aquí - sección 8.5.3. "Time Zones" de la documentación.

La diferencia entre CURRENT_TIMESTAMP y LOCALTIMESTAMP es el tipo del resultado - las antiguas declaraciones de "marca de tiempo con la zona horaria" y el segundo - "marca de tiempo":

milen=> select CURRENT_TIMESTAMP; 
       now 
------------------------------- 
2009-09-05 01:21:37.595704+03 
(1 row) 

milen=> select LOCALTIMESTAMP; 
     timestamp 
---------------------------- 
2009-09-05 01:21:41.956355 
(1 row) 

Es otra cosa completamente en ese momento zona en la que desea ver la hora actual. En este caso, la zona horaria predeterminada (que podría establecerse de varias maneras, todas descritas en la sección vinculada anteriormente) es importante. También se puede utilizar "AT TIME ZONE" en una consulta para obtener la hora actual en la zona horaria específica sin "jugueteando" con el ajuste "zona horaria":

milen=> select CURRENT_TIMESTAMP AT TIME ZONE 'UTC'; 
      timezone 
---------------------------- 
2009-09-04 22:21:44.418236 
(1 row) 
+0

Gracias, después de revisar la página ahora entiendo la diferencia de campos con o sin sello de tiempo, y no lo tenemos. Sin embargo, cuando utilizamos las marcas hora_almacenamiento y hora_actual, estamos obteniendo hora local, no GMT – Adam

Cuestiones relacionadas