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
.