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 num
timestamptz
coluna, o PostgreSQL converte o valortimestamptz
valor num valor UTC e guarda o valor UTC na tabela., - Quando você consulta
timestamptz
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
Deixe uma resposta