PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como clock_timestamp() funciona no PostgreSQL


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 .