Sql 如何获取从今天到一月的月份列表?

Sql 如何获取从今天到一月的月份列表?,sql,postgresql,Sql,Postgresql,我试图用以下代码生成从今天到一月的月份列表 select now() - (interval '1' month * generate_series(0,7)) 我需要设置列号,如果今天是11月,我如何在不设置列号的情况下获得所有月份列表?我想您需要: select * from generate_series(date_trunc('year', now()), date_trunc('month', now()), interval '1 mont

我试图用以下代码生成从今天到一月的月份列表

select now() - (interval '1' month * generate_series(0,7))
我需要设置列号,如果今天是11月,我如何在不设置列号的情况下获得所有月份列表?

我想您需要:

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月,你必须考虑你想要做什么。

我想你想要:

select *
from generate_series(date_trunc('year', now()), date_trunc('month', now()),
                     interval '1 month') g(mon);
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
如果希望从今天开始的所有日期都向后:

select *
from generate_series(now(), date_trunc('year', now()),
                     interval '-1 month') g(mon);
然而,如果今天是,比如说,8月31日,月份是2月,你必须考虑你想要做什么

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月的每个月,并将1月本身键入到
date


我已经包括了被注释掉的替代方案,用于排除当前月份和排除1月份

我不明白,您还可以粘贴预期输出吗?这对尝试回答的人来说会更容易。我不明白,你能不能也粘贴预期的输出?我如何获得今天的日期,我尝试在末尾添加日期,但它会给我错误我如何获得今天的日期,我尝试在末尾添加日期,但它会给我错误