返回开始日期和结束日期之间的月份的完整列表

时间:2018-07-11 21:07:50

标签: sql teradata

我需要一种返回月份列表的方法,而不是一个周期开始到结束之间的月份数,并且找不到解决方案。

例如,如果记录显示合同期限从2017-04-12开始并在2018-04-22结束,那么我需要返回涵盖所有月份的完整列表。所以输出看起来像这样:

Months_active  
2017-04  
2017-05  
2017-06  
2017-07  
....  
2018-03  
2018-04  

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

在Teradata中有一个很好的扩展用于创建时间序列:

SELECT To_Char(Begin(pd),'yyyy-mm') -- this extracts the year/month
FROM myTbable
-- this create one row for each month in the date range
EXPAND ON PERIOD(Trunc(start_date,'mon'), Last_Day(end_date)+1) AS pd BY ANCHOR Month_Begin