Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

291
Views
Postgres: ¿se usa NOW() en más lugares de la consulta para garantizar que siempre sea igual?

Estaba escribiendo una consulta donde tienes boletos en una mesa. La columna first_use_on representa el TIMESTAMP de la primera vez que se usó. first_use_on es por defecto NULL y luego se actualiza una vez que se usa solo por primera vez. Mi consulta funciona bien, pero ahora tengo la necesidad de saber fuera de la consulta si la consulta ejecutada activó first_use_on, así que pensé en agregar first_use_on = NOW() AS is_first_usage en el RETORNO. ¿Puedo estar 100% seguro de que el NOW() comparado en la devolución es siempre el mismo que el utilizado en la parte UPDATE ? ¿Podría haber algunos casos en los que difieran?

 UPDATE l_codes SET first_use_on = ( CASE WHEN first_use_on IS NULL THEN NOW() ELSE first_use_on END ) WHERE l_code = 'C9TCH' AND id_mostra = 1 RETURNING first_use_on, first_use_on = NOW() AS is_first_usage, NOW() > DATE_TRUNC('day', first_use_on + INTERVAL '1 DAY') AS expired, DATE_TRUNC('day', first_use_on + INTERVAL '1 DAY') AS expiration_on;
over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Sí. Como se especifica en la documentación por now() :

Dado que estas funciones devuelven la hora 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 de la hora "actual", de modo que múltiples modificaciones dentro de la misma transacción lleven la misma marca de tiempo.

El inicio de la transacción es constante para todo el extracto.

over 4 years ago · Santiago Trujillo Report

0

Postgres: ¿se usa NOW() en más lugares de la consulta para garantizar que siempre sea igual?

Sí. Devuelve la marca de tiempo al comienzo de la transacción actual, como se explica en la documentación :

Dado que estas funciones devuelven la hora 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 de la hora "actual", de modo que múltiples modificaciones dentro de la misma transacción lleven la misma marca de tiempo.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!