postgresql – postgres:生成一系列关于时区的时间戳

关于从夏令时到非夏令时的时区变化,我遇到了一个棘手的问题.

我正在尝试生成一系列时间戳,相隔6小时.随后在数据集中的每一天的00,06,12,18小时加上具有相应时间戳的数据.

这通常工作正常,使用:

generate_series(extract(来自start_ts的epoch)::整数,extract(来自end_ts的epoch):: integer,21600)

其中start_ts在第一个日期为00小时,end_ts在最后一个日期为00小时独占.

但是,当时区偏移从系列中途的11到10时,它将不再匹配任何记录,因为系列元素变为1小时关闭.

有没有人有关于如何生成一系列’纪元整数’或时间戳的建议,这些时间戳与00,18小时的时间戳相匹配,同时尊重时区的偏移量?

解决方法

这将生成它(使用Postgresql 9.5),从今天开始,持续10天:

select (current_date::timestamp + ((a-1)||' days')::interval)::timestamptz
from generate_series(1,10,.25) a

全年测试:

select *,date_part('hour',d::timestamp),d::timestamp
from (
  select (current_date::timestamp + ((a-1)||' days')::interval)::timestamptz AS d
  from generate_series(1,365,.25) a
  ) x
where date_part('hour',d) not in (0,6,18)

编辑:以下版本适用于早于9.5的Postgresql版本:

select (current_date::timestamp + (((a-1)/4.0)||' days')::interval)::timestamptz
from generate_series(1,4*  10  ) a  -- 10 days

相关文章

项目需要,有个数据需要导入,拿到手一开始以为是mysql,结果...
本文小编为大家详细介绍“怎么查看PostgreSQL数据库中所有表...
错误现象问题原因这是在远程连接时pg_hba.conf文件没有配置正...
因本地资源有限,在公共测试环境搭建了PGsql环境,从数据库本...
wamp 环境 这个提示就是说你的版本低于10了。 先打印ph...
psycopg2.OperationalError: SSL SYSCALL error: EOF detect...