我有3个单独的类型字段VARCHAR(包含时区,例如“欧洲/罗马”)DATE和INTERVAL。我想将它们组合在查询中,以便得到TIMESTAMP WITH TIME ZONE。取得此值的规则是:
在给定的时区中指定日期的正午,减去12小时并加上给定的时间间隔(此-12小时需要处理DST)。
显然,加/减INTERVAL不是问题。我的问题是我不了解如何创建“给定时区中指定日期的正午”。
一个简单的例子:
计算应如下所示:
INTERVAL '12 hours',结果是'欧洲/罗马'时区的2018-03-24 01:00:00(由于DST)INTERVAL '1 hour',最终结果是“欧洲/罗马”时区的2018-03-24 02:00:00。如何执行第1点?
PS我不能更改数据架构。它来自加载到postgres中的GTFS数据。简而言之,该模式的独特之处在于它将时区,日期和时间间隔存储在3个不同的表中:agency,calendar_dates和stop_times(嗯,时区可能在其他表中,但这对这个问题并不重要)。