postgresql - 根据各自时区的时间戳返回行

标签 postgresql timezone timestamp

我有一个表,其中每一行代表一个用户。我还将用户的时区存储为文本,例如“美国/丹佛”、“美国/纽约”等。

是否可以编写一个查询,返回当前时间在他们所在时区的下午 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 点的上限和下限。

SQL Fiddle.

AT TIME ZONE 的详细信息:

关于postgresql - 根据各自时区的时间戳返回行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32129102/

相关文章:

sql - 跨两列的 Postgres 唯一约束?

postgresql - 指定一个时区作为引用时区

java - DST 切换日的 Joda Time getSecondOfDay

django - 根据 django 项目中的用户更改时区

android - 如何从sqlite数据库中获取时间戳值?

javascript - 如何在触发 setinterval 函数或即将结束时找到开始和/或结束时间戳

windows - 在批处理脚本中生成带有时间戳的唯一文件名

r - 如何从 R 将单行数据写入 postgresql 表?

postgresql - Dokku/Docker,如何访问正在运行的容器文件系统中的文件?

postgresql - unnest() 函数的有序结果