1. 程式人生 > 其它 >Oracle 資料庫生成2021年節假日表SQL

Oracle 資料庫生成2021年節假日表SQL

技術標籤:Oracle資料庫

Oracle 資料庫生成2021年節假日表SQL

-- day_typ 0:工作日  1:休息日 2:節假日
insert into t_pub_wkday
  (wk_day, day_typ)
  select wk_day,
         case
           when wk_day in ('20210101',
                           '20210102',
                           '20210103',
                           '20210211',
                           '20210212',
                           '20210213',
                           '20210214',
                           '20210215',
                           '20210216',
                           '20210217',
                           '20210403',
                           '20210404',
                           '20210405',
                           '20210501',
                           '20210502',
                           '20210503',
                           '20210504',
                           '20210505',
                           '20210612',
                           '20210613',
                           '20210614',
                           '20210919',
                           '20210920',
                           '20210921',
                           '20211001',
                           '20211002',
                           '20211003',
                           '20211004',
                           '20211005',
                           '20211006',
                           '20211007') then
            '2'
           when wk_day in ('20210207',
                           '20210220',
                           '20210425',
                           '20210508',
                           '20210918',
                           '20210926',
                           '20211009') then
            '0'
           else
            day_typ
         end day_typ
    from (select wk_day,
                 case
                   when trim(to_char(to_date(wk_day, 'YYYYMMDD'), 'day')) in
                        ('saturday', 'sunday') then
                    '1'
                   else
                    '0'
                 end day_typ
            from (select to_char(to_date('20210101', 'yyyyMMdd') + rownum - 1,
                                 'yyyymmdd') as wk_day
                    from dual
                  connect by rownum <=
                             trunc(to_date('20211231', 'yyyyMMdd') -
                                   to_date('20210101', 'yyyyMMdd')) + 1));