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

问题描述 投票:0回答:2

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

是否可以编写一个查询来返回当前时间位于其时区下午 1 点到 11 点之间的用户?

postgresql timezone timestamp
2个回答
3
投票

鉴于此表:

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 小提琴

关于

AT TIME ZONE


0
投票

SELECT CONVERT_TZ(FROM_UNIXTIME(1196440219),'GMT','美国/丹佛');

从表中选择 * WHERE DATE_FORMAT(CONVERT_TZ(FROM_UNIXTIME(timestamp_column),'GMT','美国/丹佛'),'%H') 介于 13 到 23 之间

© www.soinside.com 2019 - 2024. All rights reserved.