Algunas tablas usan el tipo de datos "fecha". En el sistema anterior (psql 9.1/PHP5.3), cuando la fecha se almacena en la base de datos, se almacena correctamente. Sin embargo, en el nuevo sistema (psql 9.6/PHP 7.1), la fecha se almacenó incorrectamente. Por ejemplo, al almacenar el 13/7/10 en el sistema antiguo, almacena lo siguiente:
stage_date | to_timestamp ------------+------------------------ 1279004400 | 2010-07-13 00:00:00-07Al almacenar la misma fecha en el nuevo sistema, almacena lo siguiente:
stage_date | to_timestamp ------------+------------------------ 1278979200 | 2010-07-12 17:00:00-07Ambos sistemas operativos están configurados en "America/Los_Angeles". La base de datos anterior está configurada para usar "localtime" (que en 9.1 usaría la zona horaria del sistema). La nueva base de datos utiliza "PDT".
¿Qué haría que el valor en el sistema anterior se estableciera en "1279004400" frente a "1278979200" en el nuevo sistema?
Parte de la definición de la tabla:
Column | Type --------------+--------------------- id | integer stage_date | dateEn caso de que alguien más termine aquí: la vista de tabla estaba usando la función de extracción para convertir la fecha en una época. El comportamiento de la extracción cambió en PostgreSQL versión 9.2.
Este cambio revierte un cambio mal considerado realizado en la versión 7.3. La medición desde la medianoche UTC era inconsistente porque hacía que el resultado dependiera de la configuración de la zona horaria, lo que no debería ocurrir con los cálculos para la marca de tiempo sin zona horaria. El comportamiento anterior permanece disponible al convertir el valor de entrada a la marca de tiempo con zona horaria.
Consulte la respuesta a la siguiente pregunta para obtener más detalles: Diferentes resultados para extraer la época en diferentes servidores PostgreSQL