Do TFM, destaques meus:
9.9.4. Data/Hora Atual
O PostgreSQL fornece uma série de funções que retornam valores relacionados à data e hora atuais. Essas funções padrão SQL todos retornam valores com base na hora de início da transação atual :
CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_TIME(precision) CURRENT_TIMESTAMP(precision) LOCALTIME LOCALTIMESTAMP LOCALTIME(precision) LOCALTIMESTAMP(precision)
...
Como essas funções retornam a hora de início da transação atual, seus valores não mudam durante a transação. Esta é considerada uma característica:a intenção é permitir que uma única transação tenha uma noção consistente da hora "atual", de modo que várias modificações dentro da mesma transação tenham o mesmo carimbo de hora.
O PostgreSQL também fornece funções que retornam a hora de início da instrução atual, bem como a hora atual real no instante em que a função é chamada. A lista completa de funções de tempo não padrão SQL é:
transaction_timestamp() statement_timestamp() clock_timestamp() timeofday() now()
transaction_timestamp()
é equivalente aCURRENT_TIMESTAMP
, mas é nomeado para refletir claramente o que ele retorna.statement_timestamp()
retorna a hora de início da instrução atual (mais especificamente, a hora de recebimento da última mensagem de comando do cliente).statement_timestamp()
etransaction_timestamp()
retorna o mesmo valor durante o primeiro comando de uma transação, mas pode diferir durante os comandos subsequentes.clock_timestamp()
retorna a hora atual , e, portanto, seu valor muda mesmo dentro de um único comando SQL.timeofday()
é uma função histórica do PostgreSQL. Comoclock_timestamp()
, ele retorna a hora atual real, mas como uma string de texto formatada em vez de um carimbo de data/hora com o valor do fuso horário.now()
é um equivalente tradicional do PostgreSQL atransaction_timestamp()
.