自动计算根据另一个时间戳列递增的列

问题描述 投票:0回答:1

我有一个

created_at
列,我想创建一个新列,其名称会根据
created_at
出现的周数递增。例如,我有列(时间戳格式):

created_at
------------
2024-04-08 
2024-04-09
2024-04-13 
2024-04-15
2024-04-16
2024-04-18
2024-04-22
2024-04-25

我想制作以下内容:

created_at   | new_column
---------------------------------
2024-04-08     C10
2024-04-09     C10
2024-04-13     C10
2024-04-15     C11
2024-04-16     C11
2024-04-18     C11
2024-04-22     C12
2024-04-25     C12

目前我正在手动进行:

SELECT
        created_at
        , CASE
            WHEN DATE_TRUNC('week', created_at)::DATE = '2024-04-08'::DATE THEN 'C10'
            WHEN DATE_TRUNC('week', created_at)::DATE = '2024-04-15'::DATE THEN 'C11'
            WHEN DATE_TRUNC('week', created_at)::DATE = '2024-04-22'::DATE THEN 'C12'
        END AS new_columns    
FROM my_table  

 

但我想自动化它,而不是每次都创建一个新的

WHEN
语句。

postgresql
1个回答
1
投票

使用

date_part
功能:

SELECT t, 'C' || date_part('week', t)::TEXT
FROM generate_series('2024-01-01'::timestamp, '2025-01-01'::timestamp, '3 day'::interval) AS t;

它返回周索引文本:

...
"2024-03-04 00:00:00"   "C10"
"2024-03-07 00:00:00"   "C10"
"2024-03-10 00:00:00"   "C10"
"2024-03-13 00:00:00"   "C11"
"2024-03-16 00:00:00"   "C11"
"2024-03-19 00:00:00"   "C12"
"2024-03-22 00:00:00"   "C12"
"2024-03-25 00:00:00"   "C13"
"2024-03-28 00:00:00"   "C13"
...
© www.soinside.com 2019 - 2024. All rights reserved.