我尝试使用此代码生成从今天到1月的月份列表
select now() - (interval '1' month * generate_series(0,7))
我需要设置列号,那么如果今天是11月,如何在不设置列号的情况下获取所有月份列表?
答案 0 :(得分:1)
我想你想要:
select *
from generate_series(date_trunc('year', now()), date_trunc('month', now()),
interval '1 month') g(mon);
如果您希望从今天起的所有日子都倒退:
select *
from generate_series(now(), date_trunc('year', now()),
interval '-1 month') g(mon);
然而,如果今天是8月31日和月份是2月,你必须考虑你想做什么。
答案 1 :(得分:1)
with
__start as(
select
date_trunc('month', current_timestamp)::date as start_month -- Starts from this month
--(date_trunc('month', current_timestamp) + '1 month'::interval)::date as start_month -- Starts from next month
),
__end as(
select
start_month,
(start_month + ((13 - extract(month from start_month))::text || ' months')::interval)::date as end_month -- Includes January in results
-- (start_month + ((12 - extract(month from start_month))::text || ' months')::interval)::date as end_month -- Does not include January
from
__start
)
select
generate_series(start_month, end_month, '1 month'::interval)::date as intervening_month
from
__end
将输出当前月份,从现在到1月和1月之间每月输出一次date
我已经列出了被排除当前月份以及1月份以外的注释的替代品