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

Como obter a data e hora atuais com deslocamento de fuso horário no PostgreSQL

Problema:


Você gostaria de obter a data e hora atuais com informações de fuso horário de um banco de dados PostgreSQL.

Solução:


Usaremos CURRENT_TIMESTAMP ou NOW() para obter a data e hora atuais com o deslocamento de fuso horário.
SELECT CURRENT_TIMESTAMP ;

Segue o resultado da consulta:
2019-09-15 13:13:12.118432+02

Discussão:


CURRENT_TIMESTAMP retorna a data, hora e fuso horário atuais (usando a data, hora e fuso horário da máquina na qual o PostgreSQL está sendo executado). Isso é retornado como um valor no 'AAAA-MM-DD hh:mm:ss.nnnnnn+/-tz' formato. Neste formato:
  • AAAA é um ano de 4 dígitos.
  • MM é um mês de 2 dígitos.
  • DD é um dia de 2 dígitos do mês.
  • hh é uma hora de 2 dígitos.
  • mm é um minuto de 2 dígitos.
  • ss é um segundo de 2 dígitos.
  • nnnnnn define o número de segundos fracionários (ou seja, a precisão) de 0 a 6.
  • +tz ou -tz é o deslocamento do fuso horário, mais ou menos do UTC.

Como você notou, esta função não tem colchetes. No entanto, se você quiser exibir uma data e hora com uma precisão específica, poderá usar o argumento inteiro opcional. Ele retorna uma data e hora com segundos fracionários e o deslocamento de fuso horário. Esse argumento deve estar no intervalo de 0 a 6; 0 é nenhum segundo fracionário, 1 é um segundo fracionário (por exemplo, uma casa atrás do decimal), etc. Veja o próximo exemplo:
SELECT CURRENT_TIMESTAMP(3) ;

Segue o resultado da consulta:
2019-09-15 13:01:51.142+02

Esse resultado contém um segundo fracionário de 3 dígitos porque colocamos 3 como argumento na função CURRENT_TIMESTAMP. O deslocamento de fuso horário ainda aparece no final.

O tempo retornado por esta função não muda durante as transações ou uma única consulta. É sempre a hora em que a transação começou.

NOW() é semelhante ao CURRENT_TIMESTAMP função e retorna o mesmo resultado. A diferença é que CURRENT_TIMESTAMP é a função padrão do SQL, enquanto NOW() é específico do PostgreSQL.
SELECT NOW() ;

Segue o resultado da consulta:
2019-08-27 12:18:55.324145+02

Observe que a função NOW() requer colchetes. No entanto, você pode deixá-los vazios e obter o valor padrão.

CURRENT_TIMESTAMP e NOW() retornam o timestamptz tipo de dados.