Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

284
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda