published
被timestamp with time zone
存储为UTC。
gps_coordinates
是geography(Point,4326)
。
SELECT
ST_MakeLine(pp.Gps_Coordinates::geometry ORDER BY pp.Published) As DailyRoute,
pp.Published::date As DayOf
FROM xxxx As pp
WHERE pp.Id = 'xxxxxxxx'
GROUP BY DayOf
我正在尝试按日期获取ID的所有数据,但要获取请求者所在的时区,因此,如果在CST中发生的所有时间在CST 00:00:00到23:59:59 CST之间,或在EST中发生的所有事情都在EST 00:00:00到23:59:59 EST之间发生。
重新整理此查询以使用此信息获取数据的最佳方法是什么?
当我尝试时:
SELECT
ST_MakeLine(pp.Gps_Coordinates::geometry ORDER BY pp.Published) As DailyRoute,
pp.Published::date AT TIME ZONE 'CST' As DayOf
FROM xxxx As pp
WHERE pp.Id = 'xxxxxxxx'
GROUP BY DayOf
dayof的结果为2018-11-25 18:00:00
,这不是我想要的。我想根据当地时间在一天中的时间对一天中的所有内容进行分组。
答案 0 :(得分:1)
我想根据本地时区中的一天中的时间对一天中的所有内容进行分组。
如果在“本地时区”中表示用户提供的“ CST”,请使用:
ServiceHost
代替
(pp.Published AT TIME ZONE 'CST')::date AS DayOf
如果先转换为pp.Published::date AT TIME ZONE 'CST' As DayOf
,则将获得当前会话(date
)的timezone
设置所定义的日期。下面的show timezone;
构造首先将给定的AT TIME ZONE
值强制转换为timestamptz
(timestamp with time zone
),代表当前date
设置的给定日期的00:00
,然后计算相应的{ {1}}在给定的时区('CST')-不是您想要的。
相关: