postgresql – postgres:生成一系列关于时区的时间戳
发布时间:2020-12-13 15:55:17 所属栏目:百科 来源:网络整理
导读:关于从夏令时到非夏令时的时区变化,我遇到了一个棘手的问题. 我正在尝试生成一系列时间戳,相隔6小时.随后在数据集中的每一天的00,06,12,18小时加上具有相应时间戳的数据. 这通常工作正常,使用: generate_series(extract(来自start_ts的epoch)::整数,extract
关于从夏令时到非夏令时的时区变化,我遇到了一个棘手的问题.
我正在尝试生成一系列时间戳,相隔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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |