如何获取从今天到1月的月份清单?

时间:2017-08-18 10:38:30

标签: sql postgresql

我尝试使用此代码生成从今天到1月的月份列表

select now() - (interval '1' month * generate_series(0,7))

我需要设置列号,那么如果今天是11月,如何在不设置列号的情况下获取所有月份列表?

2 个答案:

答案 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月份以外的注释的替代品