@NikitaSNS

Можно ли поставить разные таймзоны в типе datetime with timezone postgresql?

Хранить в базе дату время записывая таймзону в котором дата время находится.
К примеру: 21.11.2017 11:00 UTC+3, 21.11.2017 16:00 UTC+6
Можно ли в PSQL хранить это один полем? 2014-11-10 03:13:14 UTC+5?
Я создал уже таблицу в которую инсертил такие данные:
CREATE TABLE tz (
  "timestamp" timestamp with time zone
 );

INSERT INTO tz ("timestamp") VALUES 
('2014-10-10 12:13:14 UTC+3'), 
('2014-10-10 12:13:14 UTC+4'), 
('2014-10-10 12:13:14 UTC+5');

Вот что выводит:
zonetest=# select * from tz;   
       timestamp               
------------------------       
 2014-10-10 15:13:14+00
 2014-10-10 16:13:14+00
 2014-10-10 17:13:14+00

Каким образом сохранить дату время и таймзону?
  • Вопрос задан
  • 993 просмотра
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
timestamp with time zone приводит и хранит данные только в UTC и переводит их в местное время при чтении согласно сессионной настройке timezone.

https://www.postgresql.org/docs/9.6/static/datatyp...
For timestamp with time zone, the internally stored value is always in UTC (Universal Coordinated Time, traditionally known as Greenwich Mean Time, GMT). An input value that has an explicit time zone specified is converted to UTC using the appropriate offset for that time zone. If no time zone is stated in the input string, then it is assumed to be in the time zone indicated by the system's TimeZone parameter, and is converted to UTC using the offset for the timezone zone.


timestamp without time zone вовсе игнорирует указание в литерале временной зоны.

а других timestamp и нет. Поэтому нет, хранить таймзону (при необходимости в этом) необходимо отдельно. Зато за счёт этого timestamp занимает всего константные 8 байт.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы