El operador AT TIME ZONE 'UTC' en PostgreSQL no solo convierte el tipo de dato timestamptz a timestamp, sino que introduce una trampa técnica conocida como 'footgun' que puede provocar errores silenciosos en aplicaciones de series temporales. Al aplicar esta conversión, el sistema genera un timestamp sin zona horaria, un tipo de dato que PostgreSQL desaconseja explícitamente para almacenar tiempos en UTC, ya que carece de información temporal real y su comparación con timestamptz siempre devuelve falso.
Este problema se manifiesta claramente en consultas que calculan deltas mensuales. Si un producto opera en UTC pero la máquina local tiene una zona horaria diferente, la suma de intervalos de tiempo depende de la zona de la máquina, no del UTC. Al intentar corregir esto convirtiendo el timestamp a UTC, el operador AT TIME ZONE 'UTC' vuelve a convertir el tipo a timestamp sin zona horaria, rompiendo la igualdad con el timestamptz original. Para evitar esto, el desarrollador debe invocar AT TIME ZONE 'UTC' una segunda vez sobre el resultado de la suma. La solución correcta requiere convertir el timestamp a timestamptz nuevamente para mantener la coherencia de los tipos de datos y garantizar que las comparaciones de igualdad funcionen correctamente en entornos de producción.
