Летний и зимний постгрес часовой пояс / отметка времени - PullRequest
0 голосов
/ 15 мая 2018

Я загрузил данные CSV в таблицу в Postgres.Один из столбцов - это символьный столбец с заполнением эпохи.Входящие данные выглядят следующим образом:

Example record: 1507656308.

Столбец, изменяющий символ эпохи, преобразуется в столбец метки времени следующим образом:

select 
    TIMESTAMP WITH TIME ZONE 'epoch' + timestamp::integer * INTERVAL '1 second' as timestamp
from
    table

Результат выглядел хорошо, и я продолжил его.Я живу в Нидерландах, и здесь у нас зима-лето меняются два раза в год.Видимо мои данные не дифференцируют.

Я пытался выяснить мой текущий часовой пояс.Что я сделал следующим образом:

SELECT EXTRACT(TIMEZONE FROM timestamp) FROM table;

В результате:

3,600.0000

Когда я пытаюсь выяснить свой общий часовой пояс, я получаю это:

show timezone
= Europe/Berlin

Как мне получить метки времени, чтобы распознать лето по сравнению с зимой?Или что я сделал не так?

1 Ответ

0 голосов
/ 15 мая 2018

Из всех креативных способов преобразования значения эпохи (почему оно хранится в виде строки?) В timestamp with time zone, это один из наиболее интересных вариантов.

Простой и скучный способ

SET timezone = 'Europe/Berlin';

SELECT to_timestamp(1507656308);

      to_timestamp      
------------------------
 2017-10-10 19:25:08+02
(1 row)

Смещение часового пояса для этого составляет два часа, поскольку 10 октября действовало летнее время (центральноевропейское летнее время).

Действительно:

SELECT extract(timezone FROM to_timestamp(1507656308));

 date_part 
-----------
      7200
(1 row)

Значит, все работает как положено, верно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...