问题:使用超表,时间间隔为1天,就会产生按照时间序列分子表跨8个时区现象,(首先确认的是时区没问题,select now();,和系统一致,show timezone,显示 'Asia/Shanghai'),现象是比如2024年1月15日的数据 '2024-01-15 01:00:00',会分配到1月14日数据子表,但是 '2024-01-15 09:00:00',就会分配到1月15日数据子表中,最后的结果是 time_bucket()函数结果不对。
操作步骤
-- 建表语句
create table test(
time timestamptz not null,
type int4 not null,
price float8 not null
);
-- 建立超表
select create_hypertable('test', 'time', chunk_time_interval => interval '1 day');
-- 插入数据
insert into test values('2024-01-25 00:03:28',1,1);
insert into test values('2024-01-25 10:03:28',1,1);
insert into test values('2024-01-26 00:03:28',1,1);
insert into test values('2024-01-26 06:01:28',1,1);
insert into test values('2024-01-26 10:01:28',1,1);
insert into test values('2024-01-27 00:03:28',1,1);
insert into test values('2024-01-28 00:03:28',1,1);
insert into test values('2024-01-29 00:03:28',1,1);
select * from test 的结果为:
select show_chunks('test') 为:
查找子表 select * from _timescaledb_internal._hyper_9_82_chunk
按道理来讲,不同日期应该在不同分区,但是结果却是往前搓了8个小时,当然执行 time_bucket() 函数也是错的,哪位小伙伴可以帮忙看看这个问题呢