2017-08-18 110 views
0

我試圖生成個月,從今天到1名單,與此代碼如何獲取從今天到一月的月份列表?

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

我需要設置列數,所以我怎樣才能得到一個月的不成立的列數,如果今天所有的列表是十一月?

+1

替代品我不明白,你是否也可以粘貼預期的輸出?對於那些試圖回答的人來說會更容易。 – Jeffrey04

回答

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日,這個月是二月。

+0

我如何得到今天的日期,我嘗試在最後添加date_trunc日,但它給了我錯誤 – PinballWizard

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 
現在一月一月本身的類型轉換之間每個月都要 date

將輸出電流一個月,我已經包括其被註釋掉排除當月,並排除一月

相關問題