我有一个表,其中每一行代表一个用户。我还将用户的时区存储为文本,例如“美国/丹佛”、“美国/纽约”等。
是否可以编写一个查询,返回当前时间在他们所在时区的下午 1 点到晚上 11 点之间的用户?
最佳答案
给定这张表:
CREATE TABLE usr (
usr_id serial PRIMARY KEY
, usr text NOT NULL
, tz text -- time zone names
);
使用 AT TIME ZONE
构造:
SELECT *, (now() AT TIME ZONE tz)::time AS local_time
FROM usr
WHERE (now() AT TIME ZONE tz)::time BETWEEN '13:00'::time AND '23:00'::time;
包括下午 1 点和晚上 11 点的上限和下限。
AT TIME ZONE
的详细信息:
关于postgresql - 根据各自时区的时间戳返回行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32129102/