postgresql - 按给定时区中的相应日期聚合时间戳值
问题描述
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 中发生的所有事情都发生在 00:00:00 CST 和 23:59:59 CST 之间,或者如果在EST 在 00:00:00 EST 和 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
结果的2018-11-25 18:00:00
那一天,这不是我想要的。我想根据当地时区的一天中的时间对白天的所有内容进行分组。
解决方案
我想根据当地时区的一天中的时间对白天的所有内容进行分组。
如果“本地时区”是指用户提供的“CST”,则使用:
(pp.Published AT TIME ZONE 'CST')::date AS DayOf
代替
pp.Published::date AT TIME ZONE 'CST' As DayOf
如果您转换为first,您将获得当前会话 ( ) 设置date
所定义的日期。以下构造首先将给定值强制为( )表示当前设置的给定日期,然后计算给定时区 ('CST') 的相应值 -而不是您想要的。timezone
show timezone;
AT TIME ZONE
date
timestamptz
timestamp with time zone
00:00
timezone
timestamp without time zone
有关的:
推荐阅读
- c# - 如何在静态方法中将 IConfiguration 对象注入 dotnet 核心项目?
- algorithm - 根据给定数组创建唯一对
- visual-studio - Visual Studio C/C++ Project with MASM code produces error `error A2008: syntax error : .`
- lua - 将 IR 代码列表转换为 Lua 数组/表
- c# - 如何模拟实体框架的 FromSqlRaw 方法?
- android - RecyclerView Android中按标题(1.名称,11.名称,2.名称)排序列表
- r - 如何在没有 for 循环的情况下重复生成随机样本 1000 次并绘制 alpha 估计器的图?
- python-3.x - 我可以使用 python 通过机器人发送松弛警报消息吗?
- swift - 如何在 Mac 而不是 iPhone 上创建和打印屏幕外 SwiftUI 视图
- javascript - 如何获取浏览器视口的小数宽度和高度?