No PostgreSQL,
clock_timestamp()
é uma função de hora não padrão SQL que retorna a data e a hora atuais. Uma consideração importante dessa função é que seu resultado muda ao longo da execução de uma instrução. Portanto, você pode obter um resultado diferente em diferentes partes da instrução se chamar a função várias vezes em uma única instrução.
Sintaxe
A sintaxe é tão simples quanto parece:
clock_timestamp()
Portanto, não aceita nenhum parâmetro.
Exemplo
Aqui está um exemplo básico para demonstrar.
SELECT clock_timestamp();
Resultado:
2020-07-01 09:53:22.823731+10
Várias chamadas
Aqui está um exemplo básico para demonstrar como os resultados podem diferir quando você chama a função várias vezes em uma única instrução SQL.
\x
SELECT
clock_timestamp(),
pg_sleep(5),
clock_timestamp(),
pg_sleep(3),
clock_timestamp();
Resultado (usando saída 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
Aqui, usei o
pg_sleep()
função para atrasar a execução por vários segundos. A primeira chamada atrasa a execução por 5 segundos e a segunda chamada atrasa a execução por 3 segundos. Podemos ver que cada vez que
clock_timestamp()
foi chamado, a hora real era ligeiramente diferente. Isso se deve principalmente ao pg_sleep()
função, mas ainda pode ser diferente sem ela, dependendo da rapidez com que a consulta é executada. Aqui está novamente sem o
pg_sleep()
chamadas. SELECT
clock_timestamp(),
clock_timestamp(),
clock_timestamp();
Resultado (usando saída 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
Esses exemplos usam saída vertical (geralmente chamada de exibição expandida no psql) para facilitar a leitura dos resultados.
Você pode alternar a exibição expandida no psql com
\x
.