0

I'm trying to insert a full year Calender into an ORACLE DB records MY Columns are

----------------------------------------------------------------
| [FULL_DATE] | [DAY] | [MONTH_NAME] | [MONTH_NUMBER] | [YEAR] |
----------------------------------------------------------------
Function 
(
 @DATEFROM AS DATE
 @DATETO AS DATE 
) RETURNS DATE
AS 
BEGIN 
set @datefrom = '01/01/1995' 
set @dateto = '31/12/1996' 
while(@datefrom < @dateto) 
BEGIN set @datefrom = DATEADD(day , 1 , @datefrom) 
insert into SHEMA.DIM_TIME_TABLE ( FULL_DATE , DAY , MONTH , YEAR ) select DAY(GETDATE(@datefrom)) , DATENAME(MONTH , @datefrom), MONTH(GETDATE(@datefrom)) , YEAR(GETDATE(@datefrom))
END 
RETURN
END

EXPECTED :

---------------------------------------------------------------
 01 / 01 /1995 | 01 | JAN  | 01 | 1995
---------------------------------------------------------------
 02 / 01 /1995 | 02 | JAN  | 01 | 1995  
---------------------------------------------------------------
 03 / 01 /1996 | 03 | JAN  | 01 | 1995
GMB
  • 216,147
  • 25
  • 84
  • 135
Amr Ali
  • 109
  • 1
  • 4

1 Answers1

1

In Oracle, you can use a recursive query to generate the date series, and then generate the expected columns in the outer query:

create table dim_time_table as
select 
    dt full_date,
    extract(day from dt) day,
    to_char(dt, 'month') month_name,
    extract(month from dt) month_number,
    extract(year from dt) year
from (
    select to_date('1995-01-01', 'yyyy-mm-dd') + level - 1 as dt 
    from dual 
    connect by 
        to_date('1995-01-01', 'yyyy-mm-dd') + level 
        <= to_date('1997-01-01', 'yyyy-mm-dd')
)

Demo on DB Fiddle:

FULL_DATE | DAY | MONTH_NAME | MONTH_NUMBER | YEAR
:-------- | --: | :--------- | -----------: | ---:
01-JAN-95 |   1 | january    |            1 | 1995
02-JAN-95 |   2 | january    |            1 | 1995
03-JAN-95 |   3 | january    |            1 | 1995
04-JAN-95 |   4 | january    |            1 | 1995
05-JAN-95 |   5 | january    |            1 | 1995
06-JAN-95 |   6 | january    |            1 | 1995
07-JAN-95 |   7 | january    |            1 | 1995
...
GMB
  • 216,147
  • 25
  • 84
  • 135