首页 > 解决方案 > 如何在 Oracle PLSQL 中获取给定年份所有十二个月的第一个日期和最后一个日期?

问题描述

如果我输入像“ 2021 ”这样的年份,我需要如下结果

Month   Start Date  End Date

1   1/1/2021    31/01/2021
2   1/2/2021    28/01/2021
.       
.       
.       
.       
.       
.       
.       
.       
.       
12  1/12/2021   31/12/2021

标签: sqloracleplsql

解决方案


您也可以为此直接使用模型子句。

SELECT n 
    ,  TO_DATE(&the_year||lpad(f, 2, '0'), 'YYYYMM') start_dt
    ,  last_day(TO_DATE(&the_year||lpad(f, 2, '0'), 'YYYYMM')) end_dt
FROM DUAL
MODEL
    DIMENSION by (1 as n)
    MEASURES (1 as f)
    RULES (
        f[FOR n FROM 1 TO 12 INCREMENT 1 ] = cv(n)
    )
;

模型子句的优点是,如果您以后想要每隔一个月获得一次,只需将增量从 1 更改为 2。或者如果您正在寻找一年中的季度月(一月、四月、七月、十月),您只需要将增量从 1 更改为 3,依此类推...


推荐阅读