Kalenderanzeige für ein beliebiges Jahr mit ORACLE SQL*Plus
Sie möchten einen Kalender ausgeben, und dies für jedes beliebige Jahr? Das folgende Skript erzeugt eine Ausgabe wie diese (im Beispiel für 2063):
J A N U A R F E B R U A R
SO MO DI MI DO FR SA SO MO DI MI DO FR SA
1 2 3 4 5 6 7 1 2 3 4
8 9 10 11 12 13 14 5 6 7 8 9 10 11
15 16 17 18 19 20 21 12 13 14 15 16 17 18
22 23 24 25 26 27 28 19 20 21 22 23 24 25
29 30 31 25 26 27 28
usw. usf.
Kalenderanzeige mit ORACLE SQL*Plus
-- für das Jahr 2063 ... DEFINE YEAR=2063 select decode( marker, 1, ' ', 3, 'SO MO DI MI DO FR SA ', 2, decode(mon, 1, ' J A N U A R ', 4, ' A P R I L ', 7, ' J U L i ', 10, ' O K T O B E R '), 4, decode(weekday1, '1', ' 1 2 3 4 5 6 7 ', '2', ' 1 2 3 4 5 6 ', '3', ' 1 2 3 4 5 ', '4', ' 1 2 3 4 ', '5', ' 1 2 3 ', '6', ' 1 2 ', '7', ' 1 '), 32, decode(lastday1, '31', decode(weekday1, '1', '29 30 31 ', '2', '28 29 30 31 ', '3', '27 28 29 30 31 ', '4', '26 27 28 29 30 31 ', '5', '25 26 27 28 29 30 31 ', '6', '24 25 26 27 28 29 30 ', '7', '23 24 25 26 27 28 29 '), decode(weekday1, '1', '29 30 ', '2', '28 29 30 ', '3', '27 28 29 30 ', '4', '26 27 28 29 30 ', '5', '25 26 27 28 29 30 ', '6', '24 25 26 27 28 29 30 ', '7', '23 24 25 26 27 28 29 ')), 39, decode(lastday1, '31', decode(weekday1, '6', '31 ', '7', '30 31 ', ' '), '30', decode(weekday1, '7', '30 ', ' ')), decode(weekday1, '1', lpad(to_char(marker - 3), 2) || ' ' || lpad(to_char(marker - 2), 2) || ' ' || lpad(to_char(marker - 1), 2) || ' ' || lpad(to_char(marker), 2) || ' ' || lpad(to_char(marker + 1), 2) || ' ' || lpad(to_char(marker + 2), 2) || ' ' || lpad(to_char(marker + 3), 2) || ' ', '2', lpad(to_char(marker - 4), 2) || ' ' || lpad(to_char(marker - 3), 2) || ' ' || lpad(to_char(marker - 2), 2) || ' ' || lpad(to_char(marker - 1), 2) || ' ' || lpad(to_char(marker), 2) || ' ' || lpad(to_char(marker + 1), 2) || ' ' || lpad(to_char(marker + 2), 2) || ' ', '3', lpad(to_char(marker - 5), 2) || ' ' || lpad(to_char(marker - 4), 2) || ' ' || lpad(to_char(marker - 3), 2) || ' ' || lpad(to_char(marker - 2), 2) || ' ' || lpad(to_char(marker - 1), 2) || ' ' || lpad(to_char(marker), 2) || ' ' || lpad(to_char(marker + 1), 2) || ' ', '4', lpad(to_char(marker - 6), 2) || ' ' || lpad(to_char(marker - 5), 2) || ' ' || lpad(to_char(marker - 4), 2) || ' ' || lpad(to_char(marker - 3), 2) || ' ' || lpad(to_char(marker - 2), 2) || ' ' || lpad(to_char(marker - 1), 2) || ' ' || lpad(to_char(marker), 2) || ' ', '5', lpad(to_char(marker - 7), 2) || ' ' || lpad(to_char(marker - 6), 2) || ' ' || lpad(to_char(marker - 5), 2) || ' ' || lpad(to_char(marker - 4), 2) || ' ' || lpad(to_char(marker - 3), 2) || ' ' || lpad(to_char(marker - 2), 2) || ' ' || lpad(to_char(marker - 1), 2) || ' ', '6', lpad(to_char(marker - 8), 2) || ' ' || lpad(to_char(marker - 7), 2) || ' ' || lpad(to_char(marker - 6), 2) || ' ' || lpad(to_char(marker - 5), 2) || ' ' || lpad(to_char(marker - 4), 2) || ' ' || lpad(to_char(marker - 3), 2) || ' ' || lpad(to_char(marker - 2), 2) || ' ', '7', lpad(to_char(marker - 9), 2) || ' ' || lpad(to_char(marker - 8), 2) || ' ' || lpad(to_char(marker - 7), 2) || ' ' || lpad(to_char(marker - 6), 2) || ' ' || lpad(to_char(marker - 5), 2) || ' ' || lpad(to_char(marker - 4), 2) || ' ' || lpad(to_char(marker - 3), 2) || ' ')) || decode(marker, 1, ' ', 3, 'SO MO DI MI DO FR SA ', 2, decode(mon + 1, 2, ' F E B R U A R ', 5, ' M A i ', 8, ' A U G U S T ', 11, ' N O V E M B E R '), 4, decode(weekday2, '1', ' 1 2 3 4 5 6 7 ', '2', ' 1 2 3 4 5 6 ', '3', ' 1 2 3 4 5 ', '4', ' 1 2 3 4 ', '5', ' 1 2 3 ', '6', ' 1 2 ', '7', ' 1 '), 32, decode(mon + 1, 2, decode(lastday2, '28', decode(weekday2, '1', '28 ', '2', '27 28 ', '3', '26 27 28 ', '4', '25 26 27 28 ', '5', '24 25 26 27 28 ', '6', '23 24 25 26 27 28 ', '7', '23 24 25 26 27 28 '), '29', decode(weekday2, '1', '29 ', '2', '28 29 ', '3', '27 28 29 ', '4', '26 27 28 29 ', '5', '25 26 27 28 29 ', '6', '24 25 26 27 28 29 ', '7', '23 24 25 26 27 28 29 ')), decode(lastday2, '31', decode(weekday2, '1', '29 30 31 ', '2', '28 29 30 31 ', '3', '27 28 29 30 31 ', '4', '26 27 28 29 30 31 ', '5', '25 26 27 28 29 30 31 ', '6', '24 25 26 27 28 29 30 ', '7', '23 24 25 26 27 28 29 '), decode(weekday2, '1', '29 30 ', '2', '28 29 30 ', '3', '27 28 29 30 ', '4', '26 27 28 29 30 ', '5', '25 26 27 28 29 30 ', '6', '24 25 26 27 28 29 30 ', '7', '23 24 25 26 27 28 29 '))), 39, decode(mon + 1, 2, ' ', decode(lastday2, '31', decode(weekday2, '6', '31 ', '7', '30 31 ', ' '), '30', decode(weekday2, '7', '30 ', ' '))), decode(weekday2, '1', lpad(to_char(marker - 3), 2) || ' ' || lpad(to_char(marker - 2), 2) || ' ' || lpad(to_char(marker - 1), 2) || ' ' || lpad(to_char(marker), 2) || ' ' || lpad(to_char(marker + 1), 2) || ' ' || lpad(to_char(marker + 2), 2) || ' ' || lpad(to_char(marker + 3), 2) || ' ', '2', lpad(to_char(marker - 4), 2) || ' ' || lpad(to_char(marker - 3), 2) || ' ' || lpad(to_char(marker - 2), 2) || ' ' || lpad(to_char(marker - 1), 2) || ' ' || lpad(to_char(marker), 2) || ' ' || lpad(to_char(marker + 1), 2) || ' ' || lpad(to_char(marker + 2), 2) || ' ', '3', lpad(to_char(marker - 5), 2) || ' ' || lpad(to_char(marker - 4), 2) || ' ' || lpad(to_char(marker - 3), 2) || ' ' || lpad(to_char(marker - 2), 2) || ' ' || lpad(to_char(marker - 1), 2) || ' ' || lpad(to_char(marker), 2) || ' ' || lpad(to_char(marker + 1), 2) || ' ', '4', lpad(to_char(marker - 6), 2) || ' ' || lpad(to_char(marker - 5), 2) || ' ' || lpad(to_char(marker - 4), 2) || ' ' || lpad(to_char(marker - 3), 2) || ' ' || lpad(to_char(marker - 2), 2) || ' ' || lpad(to_char(marker - 1), 2) || ' ' || lpad(to_char(marker), 2) || ' ', '5', lpad(to_char(marker - 7), 2) || ' ' || lpad(to_char(marker - 6), 2) || ' ' || lpad(to_char(marker - 5), 2) || ' ' || lpad(to_char(marker - 4), 2) || ' ' || lpad(to_char(marker - 3), 2) || ' ' || lpad(to_char(marker - 2), 2) || ' ' || lpad(to_char(marker - 1), 2) || ' ', '6', lpad(to_char(marker - 8), 2) || ' ' || lpad(to_char(marker - 7), 2) || ' ' || lpad(to_char(marker - 6), 2) || ' ' || lpad(to_char(marker - 5), 2) || ' ' || lpad(to_char(marker - 4), 2) || ' ' || lpad(to_char(marker - 3), 2) || ' ' || lpad(to_char(marker - 2), 2) || ' ', '7', lpad(to_char(marker - 9), 2) || ' ' || lpad(to_char(marker - 8), 2) || ' ' || lpad(to_char(marker - 7), 2) || ' ' || lpad(to_char(marker - 6), 2) || ' ' || lpad(to_char(marker - 5), 2) || ' ' || lpad(to_char(marker - 4), 2) || ' ' || lpad(to_char(marker - 3), 2) || ' ')) || decode(marker, 1, ' ', 3, 'SO MO DI MI DO FR SA ', 2, decode(mon + 2, 3, ' M A E R Z ', 6, ' J U N I ', 9, ' S E P T E M B E R ', 12, ' D E Z E M B E R '), 4, decode(weekday3, '1', ' 1 2 3 4 5 6 7 ', '2', ' 1 2 3 4 5 6 ', '3', ' 1 2 3 4 5 ', '4', ' 1 2 3 4 ', '5', ' 1 2 3 ', '6', ' 1 2 ', '7', ' 1 '), 32, decode(lastday3, '31', decode(weekday3, '1', '29 30 31 ', '2', '28 29 30 31 ', '3', '27 28 29 30 31 ', '4', '26 27 28 29 30 31 ', '5', '25 26 27 28 29 30 31 ', '6', '24 25 26 27 28 29 30 ', '7', '23 24 25 26 27 28 29 '), decode(weekday3, '1', '29 30 ', '2', '28 29 30 ', '3', '27 28 29 30 ', '4', '26 27 28 29 30 ', '5', '25 26 27 28 29 30 ', '6', '24 25 26 27 28 29 30 ', '7', '23 24 25 26 27 28 29 ')), 39, decode(lastday3, '31', decode(weekday3, '6', '31 ', '7', '30 31 ', ' '), '30', decode(weekday3, '7', '30 ', ' ')), decode(weekday3, '1', lpad(to_char(marker - 3), 2) || ' ' || lpad(to_char(marker - 2), 2) || ' ' || lpad(to_char(marker - 1), 2) || ' ' || lpad(to_char(marker), 2) || ' ' || lpad(to_char(marker + 1), 2) || ' ' || lpad(to_char(marker + 2), 2) || ' ' || lpad(to_char(marker + 3), 2) || ' ', '2', lpad(to_char(marker - 4), 2) || ' ' || lpad(to_char(marker - 3), 2) || ' ' || lpad(to_char(marker - 2), 2) || ' ' || lpad(to_char(marker - 1), 2) || ' ' || lpad(to_char(marker), 2) || ' ' || lpad(to_char(marker + 1), 2) || ' ' || lpad(to_char(marker + 2), 2) || ' ', '3', lpad(to_char(marker - 5), 2) || ' ' || lpad(to_char(marker - 4), 2) || ' ' || lpad(to_char(marker - 3), 2) || ' ' || lpad(to_char(marker - 2), 2) || ' ' || lpad(to_char(marker - 1), 2) || ' ' || lpad(to_char(marker), 2) || ' ' || lpad(to_char(marker + 1), 2) || ' ', '4', lpad(to_char(marker - 6), 2) || ' ' || lpad(to_char(marker - 5), 2) || ' ' || lpad(to_char(marker - 4), 2) || ' ' || lpad(to_char(marker - 3), 2) || ' ' || lpad(to_char(marker - 2), 2) || ' ' || lpad(to_char(marker - 1), 2) || ' ' || lpad(to_char(marker), 2) || ' ', '5', lpad(to_char(marker - 7), 2) || ' ' || lpad(to_char(marker - 6), 2) || ' ' || lpad(to_char(marker - 5), 2) || ' ' || lpad(to_char(marker - 4), 2) || ' ' || lpad(to_char(marker - 3), 2) || ' ' || lpad(to_char(marker - 2), 2) || ' ' || lpad(to_char(marker - 1), 2) || ' ', '6', lpad(to_char(marker - 8), 2) || ' ' || lpad(to_char(marker - 7), 2) || ' ' || lpad(to_char(marker - 6), 2) || ' ' || lpad(to_char(marker - 5), 2) || ' ' || lpad(to_char(marker - 4), 2) || ' ' || lpad(to_char(marker - 3), 2) || ' ' || lpad(to_char(marker - 2), 2) || ' ', '7', lpad(to_char(marker - 9), 2) || ' ' || lpad(to_char(marker - 8), 2) || ' ' || lpad(to_char(marker - 7), 2) || ' ' || lpad(to_char(marker - 6), 2) || ' ' || lpad(to_char(marker - 5), 2) || ' ' || lpad(to_char(marker - 4), 2) || ' ' || lpad(to_char(marker - 3), 2) || ' ')) week from (select m.r mon, s.r marker, to_char(to_date('01' || lpad(rtrim(ltrim(to_char(m.r))), 2, '0') || '&year', 'DDMMYYYY'), 'D') weekday1, to_char(to_date('01' || lpad(rtrim(ltrim(to_char(m.r + 1))), 2, '0') || '&year', 'DDMMYYYY'), 'D') weekday2, to_char(to_date('01' || lpad(rtrim(ltrim(to_char(m.r + 2))), 2, '0') || '&year', 'DDMMYYYY'), 'D') weekday3, to_char(last_day(to_date('01' || lpad(rtrim(ltrim(to_char(m.r))), 2, '0') || '&year', 'DDMMYYYY')), 'DD') lastday1, to_char(last_day(to_date('01' || lpad(rtrim(ltrim(to_char(m.r + 1))), 2, '0') || '&year', 'DDMMYYYY')), 'DD') lastday2, to_char(last_day(to_date('01' || lpad(rtrim(ltrim(to_char(m.r + 2))), 2, '0') || '&year', 'DDMMYYYY')), 'DD') lastday3 from (select r from (select 1 r from dual union select 4 r from dual union select 7 r from dual union select 10 r from dual)) m, (select r from (select 1 r from dual union select 2 r from dual union select 3 r from dual union select 4 r from dual union select 11 r from dual union select 18 r from dual union select 25 r from dual union select 32 r from dual union select 39 r from dual)) s order by m.r, s.r) /
Stefan Ausmann
info
held-informatik
de