select to_date('&date','YYYYMMDD')-1 + level as DateRange
, to_char(to_date('&date','YYYYMMDD')-1 + level, 'ddd') "DAY OF YEAR"
, to_char(to_date('&date','YYYYMMDD')-1 + level, 'day') "DAY"
, to_char(to_date('&date','YYYYMMDD')-1 + level, 'dy') "SHORT DAY"
, to_char(to_date('&date','YYYYMMDD')-1 + level-1, 'd') "DAY OF WEEK"
, to_char(to_date('&date','YYYYMMDD')-1 + level, 'dd') "DAY OF MONTH"
, to_char(to_date('&date','YYYYMMDD')-1 + level, 'ww') "WEEK"
, to_char(to_date('&date','YYYYMMDD')-1 + level, 'mm') "MONTH"
, to_char(to_date('&date','YYYYMMDD')-1 + level, 'month') "LONG MONTH"
, to_char(to_date('&date','YYYYMMDD')-1 + level, 'mon') "SHORT MONTH"
, to_char(to_date('&date','YYYYMMDD')-1 + level, 'q') "QUARTER"
, to_char(to_date('&date','YYYYMMDD')-1 + level, 'yyyy') "YEAR"
, to_char(to_date('&date','YYYYMMDD')-1 + level, 'hh') "HOUR"
, to_char(to_date('&date','YYYYMMDD')-1 + level, 'mi') "MIN"
, to_char(to_date('&date','YYYYMMDD')-1 + level, 'ss') "SEC"
from dual
where (to_date('&date','YYYYMMDD')-1+level) <= trunc(sysdate)
connect by level<=1000
;