Т
Size: a a a
Т
s
Т
s
Т
GB
timezone('Europe/Moscow', '2020-06-11 08:28:27'::timestamp AT time ZONE 'utc'),Работает так:
timestamptz at time zone
возвращает timestamp
, а не timestamptz
с зоной отображения? Простой ответ, кажется, в том, что тогда пришлось бы где-то хранить эту самую "зону отображения". Соответственно, мой вопрос транслируется в "почему разработчики ПГ решили не хранить таймзону в рамках timestamptz?". Что приводит к этому письму.utc TIMESTAMP
и iana_timezone_id CHARACTER VARYING
, с ручной конвертацией на приложении и AT TIME ZONE 'utc' AT TIME ZONE iana_timezone_id
в скриптах, благо, последних используется значительно меньше.GB
timestamptz at time zone
возвращает timestamp
, а не timestamptz
с зоной отображения? Простой ответ, кажется, в том, что тогда пришлось бы где-то хранить эту самую "зону отображения". Соответственно, мой вопрос транслируется в "почему разработчики ПГ решили не хранить таймзону в рамках timestamptz?". Что приводит к этому письму.utc TIMESTAMP
и iana_timezone_id CHARACTER VARYING
, с ручной конвертацией на приложении и AT TIME ZONE 'utc' AT TIME ZONE iana_timezone_id
в скриптах, благо, последних используется значительно меньше.YS
timestamptz at time zone
возвращает timestamp
, а не timestamptz
с зоной отображения? Простой ответ, кажется, в том, что тогда пришлось бы где-то хранить эту самую "зону отображения". Соответственно, мой вопрос транслируется в "почему разработчики ПГ решили не хранить таймзону в рамках timestamptz?". Что приводит к этому письму.utc TIMESTAMP
и iana_timezone_id CHARACTER VARYING
, с ручной конвертацией на приложении и AT TIME ZONE 'utc' AT TIME ZONE iana_timezone_id
в скриптах, благо, последних используется значительно меньше.timestamptz at time zone
возвращает timestamp
<skip>YS
GB
YS
GB
utc TIMESTAMP
для пунктов отправления/прибытия. И для фильтров отправления/прибытия, упрощённо,SELECT '...'
FROM points AS p
INNER JOIN facilities AS f
USING(facility_id)
WHERE (p.utc AT TIME ZONE 'utc' AT TIME ZONE f.iana_timezone_id)::date = @date
Y
N
YS
utc TIMESTAMP
для пунктов отправления/прибытия. И для фильтров отправления/прибытия, упрощённо,SELECT '...'
FROM points AS p
INNER JOIN facilities AS f
USING(facility_id)
WHERE (p.utc AT TIME ZONE 'utc' AT TIME ZONE f.iana_timezone_id)::date = @date
CREATE TABLE airports(
code text NOT NULL PRIMARY KEY,
name text NOT NULL,
time_zone text NOT NULL -- , <прочие поля>
);
CREATE TABLE flights(
-- ...
departure_airport_id REFERENCES airports,
arrival_airport_id REFERENCES airports,
departure_ts timestamptz NOT NULL,
arrival_ts timestamptz NOT NULL
);
SELECT f.departure_ts AT TIME ZONE departure_airport.time_zone AS departure_local,
f.arrival_ts AT TIME ZONE arrival_airport.time_zone AS arrival_local --- , ...
FROM flights AS f
JOIN airports AS departure_airport
ON departure_airport.id = f.departure_airport_id
JOIN airports AS arrival_airport
ON arrival_airport.id = f.arrival_airport_id
AP
П
РЖ
AP
РЖ