válida una truncar tipo sintaxis postgres para obtener manejo insertar hoy hora formato fechas fecha entrada como año almacenar postgresql transactions timestamp postgresql-9.1

truncar - postgresql obtener año de una fecha



Ahora() todos los valores predeterminados muestran la misma marca de tiempo (2)

He creado mis tablas con una columna (escriba: marca de hora con zona horaria) y establezco su valor predeterminado en now() ( current_timestamp() ).

Ejecuto una serie de inserciones en sentencias separadas en una sola función y noté que todas las marcas de tiempo son iguales a (ms), ¿el valor de la función se almacena en caché y se comparte para toda la llamada o transacción de la función?


Ese es el comportamiento esperado y documentado :

Del manual:

Dado que estas funciones devuelven el tiempo de inicio de la transacción actual, sus valores no cambian durante la transacción. Esto se considera una característica: la intención es permitir que una sola transacción tenga una noción consistente del tiempo "actual", de modo que las modificaciones múltiples dentro de la misma transacción lleven la misma marca de tiempo.

Si desea algo que cambie cada vez que ejecute una declaración, debe usar statement_timestamp() o incluso clock_timestamp() (nuevamente vea la descripción en el manual)


now() o current_timestamp son funciones STABLE que devuelven la marca de tiempo cuando se inició la transacción .

Considere una de las otras opciones que ofrece PostgreSQL , en particular statement_timestamp() .
Por documentación :

statement_timestamp() devuelve la hora de inicio de la instrucción actual (más específicamente, la hora de recepción del último mensaje de comando del cliente)