根据与其时区相关的时间戳返回行

时间:2015-08-20 21:59:15

标签: postgresql timezone timestamp

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

是否可以编写一个查询,返回当前时间为下午1点到晚上11点的用户,这些用户的时区分别为?

2 个答案:

答案 0 :(得分: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 Fiddle.

AT TIME ZONE的详细信息:

答案 1 :(得分:0)

SELECT CONVERT_TZ(FROM_UNIXTIME(1196440219),'GMT','America / Denver');

SELECT * FROM表WHERE DATE_FORMAT(CONVERT_TZ(FROM_UNIXTIME(timestamp_column),'GMT','America / Denver'),'%H')介于13和23之间