あなたの質問はあまり具体的ではないので、私はそのようなことがどのように行われるのかの例に答えます。この例は、目的に合わせて調整する必要があります。たとえば、出発時刻をtimestamp with time zone
として保存するとは思いません。
CREATE TABLE address (
id integer PRIMARY KEY,
timezone text NOT NULL
);
INSERT INTO address VALUES
(1, 'America/Los_Angeles'),
(2, 'America/Chihuahua');
CREATE TABLE bus_stop (
id integer PRIMARY KEY,
depart TIMESTAMP WITH TIME ZONE NOT NULL,
address_id INTEGER NOT NULL
REFERENCES address(id)
);
INSERT INTO bus_stop VALUES
(1, '2017-06-27 19:00:00 America/Los_Angeles', 1),
(2, '2017-06-27 18:00:00 America/Los_Angeles', 1),
(3, '2017-06-27 18:00:00 America/Los_Angeles', 2);
今、私たちは、バス19:00現地時刻に出発のバスがあるだろう停止するのかを知りたい:
SELECT b.id
FROM bus_stop b
JOIN address a
ON b.address_id = a.id
WHERE (b.depart AT TIME ZONE a.timezone) = TIMESTAMP '2017-06-27 19:00:00';
┌────┐
│ id │
├────┤
│ 1 │
│ 3 │
└────┘
(2 rows)