日期:2014-05-16  浏览次数:20538 次

[Oracle]计算年初到当前日期累计跨天数
时间维表:

CREATE TABLE D_TIME(
   D_DAY                DATE                            NOT NULL,
   C_DAY_ID             VARCHAR2(8)                     NOT NULL,
   C_MONTH_ID           VARCHAR2(8)                     NOT NULL,
   C_MONTH_END_DATE     VARCHAR2(8)                     NOT NULL,
   C_YEAR_ID            VARCHAR2(8)                     NOT NULL,
   C_YEAR_END_DATE     VARCHAR2(8)                     NOT NULL
);

select  d1.c_day_id,
                    d1.d_day   sd_day,
                    d1.d_day-to_date(d1.c_year_id||'0101','yyyymmdd')+1 timespan,--跨天数
                        d1.c_month_id,
                    d1.c_month_end_date,
                    d1.c_year_id,
                    d1.c_year_end_date,
                    d2.d_day     d_day
from d_time d1
inner join d_time d2 on d1.c_year_id = d2.c_year_id  and d1.d_day >= d2.d_day
where d1.d_day >= to_date('201203'||'01', 'yyyymmdd')--代入开始时间
and d1.d_day <= last_day(to_date('201203', 'yyyymm'))--代入结束时间