No PostgreSQL,
timeofday()
é uma função de hora não padrão SQL que retorna a data e hora atuais, com a abreviação de fuso horário. É semelhante ao
clock_timestamp()
função, exceto que ela retorna seu resultado como um text
formatado string em vez de um timestamp with time zone
valor. O resultado de ambas as funções 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 as funções várias vezes em uma única instrução.
Sintaxe
A sintaxe fica assim:
timeofday()
Portanto, não aceita nenhum parâmetro.
Exemplo
Aqui está um exemplo básico para demonstrar.
SELECT timeofday();
Resultado:
Thu Jul 02 10:00:27.068776 2020 AEST
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
timeofday(),
pg_sleep(5),
timeofday(),
pg_sleep(3),
timeofday();
Resultado (usando saída vertical):
timeofday | Thu Jul 02 10:02:23.060770 2020 AEST pg_sleep | timeofday | Thu Jul 02 10:02:28.131195 2020 AEST pg_sleep | timeofday | Thu Jul 02 10:02:31.192749 2020 AEST
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
timeofday()
foi chamado, a hora real era ligeiramente diferente. Isso se deve principalmente ao pg_sleep()
função, no entanto, também pode ser ligeiramente diferente sem ela, dependendo da rapidez com que a consulta é executada. Aqui está novamente sem o
pg_sleep()
chamadas. SELECT
timeofday(),
timeofday(),
timeofday();
Resultado (usando saída vertical):
timeofday | Thu Jul 02 10:03:26.044065 2020 AEST timeofday | Thu Jul 02 10:03:26.044076 2020 AEST timeofday | Thu Jul 02 10:03:26.044080 2020 AEST
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
.