Resumo: neste tutorial, irá aprender sobre os tipos de dados do PostgreSQL timestamp, incluindo timestamp e timestamptz. Você também vai aprender a usar algumas funções úteis para lidar com dados timestamp mais eficazmente.,

Introdução ao PostgreSQL carimbo de data / hora

o PostgreSQL fornece-lhe com dois temporal tipos de dados para manipulação de carimbo de data / hora:

  • timestamp: um carimbo de data / hora, sem um fuso horário.
  • timestamptz: timestamp com um fuso-horário.

o timestamp datatype permite armazenar a data e a hora. No entanto, não tem dados de fuso horário., Isso significa que quando você muda o fuso-horário de seu servidor de banco de dados, o valor do timestamp armazenado na base de dados não vai mudar automaticamente.

Thetimestamptz datatype is the timestamp with the time zone. Otimestamptz datatype é um tipo de dados de fuso horário e data.

PostgreSQL armazena o

no valor UTC.

  • quando introduz um valor numtimestamptz coluna, o PostgreSQL converte o valortimestamptz valor num valor UTC e guarda o valor UTC na tabela.,
  • Quando você consultatimestamptz da base de dados, PostgreSQL converte o valor UTC de volta para o valor de tempo do fuso-horário definido pelo servidor da base de dados, pelo utilizador ou pela ligação à base de dados actual.

Repare que tanto o timestamp e timestamptz utiliza 8 bytes para armazenar os valores de carimbo de data / hora, conforme mostrado na seguinte consulta:

Code language: SQL (Structured Query Language) (sql)

É importante notar que timestamptz valor é armazenado como um valor de UTC. PostgreSQL não armazena qualquer fuso-horário com o valor timestamptz.,

PostgreSQL timestamp example

Let’s take a look at an example of using the timestamp andtimestamptz to have a better understanding of how PostgreSQL handes them.

primeiro, crie uma tabela que consiste em ambas as colunastimestamp otimestamptz colunas.

Code language: SQL (Structured Query Language) (sql)

Next, set the time zone of the database server toAmerica/Los_Angeles.,

Code language: SQL (Structured Query Language) (sql)

By the way, você pode ver a hora atual de zona usando o SHOW TIMEZONE comando:

Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)

em Seguida, inserir uma nova linha timstamp_demo tabela:

Após o que, os dados da consulta de timestamp e timestamptz colunas.

Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)

a consulta devolve os mesmos valores temporais que os valores inseridos.,

finalmente, mude o fuso-horário da sessão actual para America/New_York e os dados da consulta novamente.

Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)

O valor de timestamp coluna não muda, considerando que o valor de timestamptz coluna é ajustada para o novo fuso de horário de 'America/New_York'.

geralmente, é uma boa prática usar o timestamptz datatype para armazenar os dados do timestamp.,>

Para lidar com carimbo de data / hora dados de forma eficaz, o PostgreSQL fornece algumas funções úteis, como a seguir:

Chegando a hora atual

Para obter o carimbo de data / hora que você use o NOW() funciona da seguinte maneira:

Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)

Ou você pode usar o CURRENT_TIMESTAMP:

Code language: SQL (Structured Query Language) (sql)

Para obter a hora atual, sem data, você pode usar CURRENT_TIME:

Code language: SQL (Structured Query Language) (sql)

Observe que tanto o CURRENT_TIMESTAMP e CURRENT_TIME voltar o tempo atual, com o fuso horário.,

para obter a hora do dia no formato de texto, você usa a função timeofday().

Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)

Convert between timezones

to convert a timestamp to another time zone, you use the timezone(zone, timestamp) função.

Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)

the current timezone is America/Los_Angeles.,

To convert 2016-06-01 00:00 to America/New_York timezone, you use the timezone() function as follows:

Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)

Note that we pass the timestamp as a string to the timezone() function, PostgreSQL casts it to timestamptz implicitly., É melhor lançar um valor de carimbo de hora para o timestamptz tipo de dados explicitamente como a instrução a seguir:

Code language: SQL (Structured Query Language) (sql)

neste tutorial, você apresentou para o PostgreSQL carimbo de data / hora tipo de dados e mostrado como utilizar algumas funções úteis para a manipulação de valores de carimbo de data / hora.

  • este tutorial foi útil ?
  • YesNo