gpt4 book ai didi

postgresql - Postgres : generate series of timestamps respecting time zone

转载 作者:行者123 更新时间:2023-11-29 11:29:40 25 4
gpt4 key购买 nike

关于从夏令时到非夏令时的时区更改,我被一个棘手的问题难住了。

我正在尝试生成一系列时间戳,间隔 6 小时。这随后与数据集中每天 00、06、12、18 小时具有相应时间戳的数据相结合。

这正常工作正常,使用:

generate_series(extract(epoch from start_ts)::integer, extract(epoch from end_ts)::integer, 21600)

其中 start_ts 是第一个日期的 00 小时,end_ts 是最后一个日期的 00 小时。

但是,当时区偏移量在系列中途从 +11 变为 +10 时,它将不再匹配任何记录,因为系列元素变为 1 小时。

有没有人对如何生成一系列“纪元整数”或时间戳以匹配 00、06、12、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, 12, 18)

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

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

关于postgresql - Postgres : generate series of timestamps respecting time zone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36539162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com