在SQL中,可以使用DATE_TRUNC函数将时间戳按指定的时间粒度进行截断,再将其转化为日期格式,最终实现按周创建时间分区。
例如,以PostgreSQL为例,可以这样创建一个时间戳字段的按周分区表:
CREATE TABLE mytable (
id INTEGER,
created_at TIMESTAMP
) PARTITION BY RANGE (DATE_TRUNC('week', created_at));
CREATE TABLE mytable_week_1 PARTITION OF mytable
FOR VALUES FROM ('2022-01-01') TO ('2022-01-08');
CREATE TABLE mytable_week_2 PARTITION OF mytable
FOR VALUES FROM ('2022-01-08') TO ('2022-01-15');
......
上述代码中,首先使用DATE_TRUNC函数对created_at字段按周进行截断,截断后的结果按照日期格式进行存储。然后使用PARTITION BY RANGE语句实现了按照日期即周分区,具体每个分区的时间段通过多个CREATE TABLE语句进行定义。
上一篇:按周/月分组