PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Преобразувайте клеймото за време в местно време за дадена часова зона по време на „КОПИРАЙТЕ .. КЪМ ..“

Първо, трябва да използвате timestamptz вместо timestamp когато работите с множество часови зони. Ще избегне напълно проблема.

Подробности:

Вие можете използвайте AT TIME ZONE конструкция като @NuLo предлага , може дори работи, но не точно както е описано.

AT TIME ZONE преобразува типа timestamp (timestamp without time zone ) към timestamptz (timestamp with time zone ) и обратно. Представяне на текст на timestamptz стойността зависи от текущата настройка на часовата зона в сесията, в която изпълнявате командата. Тези два timestamptz стойности са 100 % идентични (означават една и съща точка във времето):

'2015-09-02 15:55:00+02'::timestamptz
'2015-09-02 14:55:00+01'::timestamptz

Но представянето на текст не е . Дисплеят е за различни часови зони. Ако вземете този низов литерал и го подадете към timestamp тип, частта за часовата зона просто се игнорира и в крайна сметка получавате различни стойности. Следователно, ако изпълните своя COPY израз в сесия със същата настройка за часова зона като първоначалния ви timestamp стойностите са за, предложената операция се случва на работа.

Чистият начин обаче е да се създаде правилен timestamp стойности, като започнете с прилагането на AT TIME ZONE два пъти :

SELECT event AT TIME ZONE 'my_target_tz' AT TIME ZONE 'my_source_tz', ...
FROM   logtable
ORDER  BY event desc;

'my_target_tz' е „вашата собствена часова зона“ и 'my_source_tz' часовата зона на облачния сървър в примера. За да сте сигурни, че DST се спазва, използвайте имена на часови зони , а не съкращения на часови зони. Документацията:

Свързани:

Или, още по-добре, използвайте timestamptz навсякъде и работи правилно автоматично.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres добавя или задава всеки елемент (ако не съществува) от масив към колона от масив

  2. Как да направя транзакции на база данни с psycopg2/python db api?

  3. Как make_date() работи в PostgreSQL

  4. Конвертиране на Django от SQLite в PostgreSQL

  5. Как да картографирате PostgreSQL масив с Hibernate