如何在Oracle中填充日历表?

ter*_*fic 5 sql database oracle

我想在Oracle DB中维护一个日历表,我希望从2011年到2013年的所有日期(可能是任何一年)填写.我怎样才能做到这一点?

考虑我的数据库表有列和示例数据集是:

S.No  Cal_Dt      DayName 
1     01-01-2011  Monday
2     02-01-2011  Tuesday
3     03-01-2011  Wednesday
Run Code Online (Sandbox Code Playgroud)

等等.

我只关注Cal_Dt(DayName是可选的).

Ale*_*ssi 13

这是一种简单易行的方法

with calendar as (
        select :startdate + rownum - 1 as day
        from dual
        connect by rownum < :enddate - :startdate
    )
select rownum as "S.No", to_date(day,'dd_mm_yyyy') as "Cal_Dt", to_char(day,'day') as "DayName"
from calendar
Run Code Online (Sandbox Code Playgroud)

  • 当在 Oracle 11g 中运行查询时,我收到错误 ORA-00904:"STARTDATE":invalid identifier。给出的输入日期格式是 01012016。请帮忙。 (2认同)

小智 5

with calendar as (
        select rownum - 1 as daynum
        from dual
        connect by rownum < sysdate - to_date('1-jan-2010') + 1
    )
select to_date('1-jan-2010') + daynum as monthdate
from calendar
;
Run Code Online (Sandbox Code Playgroud)