sql >> Base de Datos >  >> RDS >> PostgreSQL

Cómo funciona clock_timestamp() en PostgreSQL

En PostgreSQL, clock_timestamp() es una función de hora no estándar de SQL que devuelve la fecha y la hora actuales.

Una consideración importante de esta función es que su resultado cambia a lo largo de la ejecución de una declaración. Por lo tanto, podría obtener un resultado diferente en diferentes partes de la declaración si llama a la función varias veces dentro de una sola declaración.

Sintaxis

La sintaxis es tan simple como parece:

clock_timestamp()

Por lo tanto, no acepta ningún parámetro.

Ejemplo

Aquí hay un ejemplo básico para demostrarlo.

SELECT clock_timestamp();

Resultado:

2020-07-01 09:53:22.823731+10

Múltiples llamadas

Aquí hay un ejemplo básico para demostrar cómo los resultados pueden diferir cuando llama a la función varias veces dentro de una sola instrucción SQL.

\x
SELECT 
  clock_timestamp(),
  pg_sleep(5),
  clock_timestamp(),
  pg_sleep(3),
  clock_timestamp();

Resultado (usando salida vertical):

clock_timestamp | 2020-07-01 09:58:29.744838+10
pg_sleep        |
clock_timestamp | 2020-07-01 09:58:34.813448+10
pg_sleep        |
clock_timestamp | 2020-07-01 09:58:37.859197+10

Aquí, usé pg_sleep() función para retrasar la ejecución durante varios segundos. La primera llamada retrasa la ejecución durante 5 segundos y la segunda llamada retrasa la ejecución durante 3 segundos.

Podemos ver que cada vez clock_timestamp() fue llamado, la hora real fue ligeramente diferente. Esto se debe principalmente a pg_sleep() función, pero aún podría ser diferente sin ella, dependiendo de qué tan rápido se ejecute la consulta.

Aquí está de nuevo sin pg_sleep() llamadas.

SELECT 
  clock_timestamp(),
  clock_timestamp(),
  clock_timestamp();

Resultado (usando salida vertical):

clock_timestamp | 2020-07-01 10:03:10.828557+10
clock_timestamp | 2020-07-01 10:03:10.828558+10
clock_timestamp | 2020-07-01 10:03:10.828558+10

Estos ejemplos usan salida vertical (generalmente llamada visualización expandida en psql) para facilitar la lectura de los resultados.

Puede alternar la visualización expandida en psql con \x .