La función TRANSACTION_TIMESTAMP en PostgreSQL es una herramienta que te permite obtener la fecha y hora local correspondiente al inicio de una transacción, incluyendo el desplazamiento de la zona horaria. Es una alternativa a la función NOW()
y comparte similitudes con CURRENT_TIMESTAMP
cuando se utiliza sin argumentos, aunque con la peculiaridad de que TRANSACTION_TIMESTAMP fija el valor al momento en que comenzó la transacción.
A diferencia de otras funciones temporales en PostgreSQL, TRANSACTION_TIMESTAMP no acepta argumentos, lo que simplifica su uso en consultas donde necesitas un registro temporal preciso y constante durante toda la duración de una transacción. Esto la convierte en una función clave para operaciones que requieren coherencia temporal, como auditorías o registros de eventos.
En este artículo, primero te mostraré la sintaxis básica de TRANSACTION_TIMESTAMP, y después veremos ejemplos prácticos que ilustran cómo implementarla en distintos contextos.
Para más información, puedes consultar la documentación oficial de la función TRANSACTION_TIMESTAMP en PostgreSQL.
Sintaxis
La sintaxis para utilizar la función TRANSACTION_TIMESTAMP en PostgreSQL es la siguiente:
TRANSACTION_TIMESTAMP()
Ejemplo
SELECT TRANSACTION_TIMESTAMP();

NOW en transacciones
Es importante tener en cuenta que al utilizar la función TRANSACTION_TIMESTAMP en PostgreSQL dentro de transacciones, siempre devolverá la fecha y hora local correspondientes al momento en que inició la transacción, incluyendo el desplazamiento de la zona horaria. Esto significa que, independientemente de cuántas veces llames a la función dentro de la misma transacción, el valor devuelto será constante y no reflejará cambios posteriores durante su ejecución.
BEGIN; SELECT TRANSACTION_TIMESTAMP(); SELECT pg_sleep(3); SELECT TRANSACTION_TIMESTAMP(); COMMIT;
