我有一个表,其中每一行代表一个用户。我还将用户的时区存储为“美国/丹佛'美国/纽约'等
是否可以编写一个查询,返回当前时间为下午1点到晚上11点的用户,这些用户的时区分别为?
答案 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点的上限和下限。
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之间