No PostgreSQL, o
localtimestamp()
A função retorna a data e a hora locais, sem o deslocamento de fuso horário. Se você precisar do deslocamento de fuso horário, use
current_timestamp()
em vez de. Sintaxe
Você pode usá-lo de uma das seguintes maneiras:
localtimestamp
localtimestamp(x)
Onde
x
é um parâmetro de precisão opcional, que faz com que o resultado seja arredondado para x
número de dígitos fracionários no campo de segundos. Sem um parâmetro de precisão (a primeira sintaxe), o resultado é fornecido com a precisão total disponível.
Exemplo – Precisão total
Aqui está um exemplo básico para demonstrar um resultado usando a precisão total disponível.
SELECT localtimestamp;
Resultado:
2020-07-01 15:55:48.039777
Exemplo – Precisão Específica
Aqui está um exemplo para demonstrar como especificar a precisão.
SELECT localtimestamp(0);
Resultado:
2020-07-01 15:56:02
Neste exemplo, especifiquei uma precisão de zero, o que significa que nenhum segundo fracionário foi retornado.
Aqui está outro exemplo em que especifico um número de segundos fracionários.
SELECT localtimestamp(3);
Resultado:
2020-07-01 15:56:14.771
Transações
O carimbo de data/hora real é baseado na hora de início da transação atual. Portanto, ele não muda à medida que a transação avança.
Isso permite que uma única transação tenha uma noção consistente da hora “atual”, de modo que várias modificações na mesma transação tenham o mesmo carimbo de hora.
Aqui está um exemplo que demonstra isso.
BEGIN;
SELECT localtimestamp;
SELECT pg_sleep(5);
SELECT localtimestamp;
SELECT pg_sleep(5);
SELECT localtimestamp;
COMMIT;
Aqui está a saída completa do meu terminal ao executar essa transação no psql:
postgres=# BEGIN; BEGIN postgres=# SELECT localtimestamp; localtimestamp -------------------------- 2020-07-02 09:25:38.3858 (1 row) postgres=# SELECT pg_sleep(5); pg_sleep ---------- (1 row) postgres=# SELECT localtimestamp; localtimestamp -------------------------- 2020-07-02 09:25:38.3858 (1 row) postgres=# SELECT pg_sleep(5); pg_sleep ---------- (1 row) postgres=# SELECT localtimestamp; localtimestamp -------------------------- 2020-07-02 09:25:38.3858 (1 row) postgres=# COMMIT; COMMIT
Todos os três valores de tempo são idênticos, embora o
pg_sleep()
A função era usada para atrasar a execução entre cada instrução dentro da transação. Isso contrasta com
statement_timestamp()
o que faz mudar a cada afirmação. Várias chamadas em um extrato
Também não muda à medida que a declaração progride.
\x
SELECT
localtimestamp,
pg_sleep(5),
localtimestamp,
pg_sleep(5),
localtimestamp;
Resultado (usando saída vertical):
localtimestamp | 2020-07-02 09:26:46.743801 pg_sleep | localtimestamp | 2020-07-02 09:26:46.743801 pg_sleep | localtimestamp | 2020-07-02 09:26:46.743801
Todos os três valores de tempo são idênticos, embora o
pg_sleep()
função foi usada para atrasar a execução entre cada chamada para localtimestamp
. Isso contrasta com o
clock_timestamp()
função, que faz mudar à medida que progride através da declaração. Neste exemplo, usei a saída vertical (também conhecida como saída expandida) para tornar os resultados um pouco mais compactos.
Você pode alternar a saída expandida no psql usando
\x
.