Продолжаем наши справочники! Итак, определим такой блок:
SET SERVEROUTPUT ON BEGIN -- Function ADD_MONTHS() -- DBMS_OUTPUT.put_line('46*-> '||ADD_MONTHS('09-02-2000', 5)); -- Function ADD_MONTHS() -- DBMS_OUTPUT.put_line('47*-> '||ADD_MONTHS('18-06-2001', 3)); -- Function ADD_MONTHS() -- DBMS_OUTPUT.put_line('48*-> '||ADD_MONTHS('12-02-1981', 2)); -- Function LAST_DAY() -- DBMS_OUTPUT.put_line('49*-> '||LAST_DAY('09-02-2000')||' '||LAST_DAY('19-02-2001')); -- Function LAST_DAY() -- DBMS_OUTPUT.put_line('50*-> '||LAST_DAY('05-03-2002')); -- Function MONTHS_BETWEEN() -- DBMS_OUTPUT.put_line('51*-> '||MONTHS_BETWEEN('16-04-1973', '16-03-1997')); -- Function MONTHS_BETWEEN() -- DBMS_OUTPUT.put_line('52*-> '||MONTHS_BETWEEN('18-04-1972', '23-03-1961')); -- Function NEW_TIME() -- DBMS_OUTPUT.put_line( '53*-> '||TO_CHAR(NEW_TIME(TO_DATE('12-04-1971 12:00:00', 'DD-MM-YYYY HH24:MI:SS'), 'PST', 'EST'), 'DD-MON-YYYY HH24:MI:SS')||': Pacific -> Eastern' ); -- Function NEXT_DAY() -- DBMS_OUTPUT.put_line( '54*-> '||NEXT_DAY('07-04-2003', 'Понедельник')); -- Function NEXT_DAY() -- DBMS_OUTPUT.put_line( '55*-> '||NEXT_DAY('01-03-1998', 'Четверг')); END; /
После запуска в SQL*Plus получаем:
SQL> BEGIN 2 3 -- Function ADD_MONTHS() -- 4 DBMS_OUTPUT.put_line('46*-> '||ADD_MONTHS('09-02-2000', 5)); 5 6 -- Function ADD_MONTHS() -- 7 DBMS_OUTPUT.put_line('47*-> '||ADD_MONTHS('18-06-2001', 3)); 8 9 -- Function ADD_MONTHS() -- 10 DBMS_OUTPUT.put_line('48*-> '||ADD_MONTHS('12-02-1981', 2)); 11 12 -- Function LAST_DAY() -- 13 DBMS_OUTPUT.put_line('49*-> '||LAST_DAY('09-02-2000')||' '||LAST_DAY('19-02-2001')); 14 15 -- Function LAST_DAY() -- 16 DBMS_OUTPUT.put_line('50*-> '||LAST_DAY('05-03-2002')); 17 18 -- Function MONTHS_BETWEEN() -- 19 DBMS_OUTPUT.put_line('51*-> '||MONTHS_BETWEEN('16-04-1973', '16-03-1997')); 20 21 -- Function MONTHS_BETWEEN() -- 22 DBMS_OUTPUT.put_line('52*-> '||MONTHS_BETWEEN('18-04-1972', '23-03-1961')); 23 24 -- Function NEW_TIME() -- 25 DBMS_OUTPUT.put_line( '53*-> '||TO_CHAR(NEW_TIME(TO_DATE('12-04-1971 12:00:00', 'DD-MM-YYYY HH24:MI:SS'), 26 'PST', 'EST'), 'DD-MON-YYYY HH24:MI:SS')||': Pacific -> Eastern' ); 27 28 -- Function NEXT_DAY() -- 29 DBMS_OUTPUT.put_line( '54*-> '||NEXT_DAY('07-04-2003', 'Понедельник')); 30 31 -- Function NEXT_DAY() -- 32 DBMS_OUTPUT.put_line( '55*-> '||NEXT_DAY('01-03-1998', 'Четверг')); 33 34 END; 35 / 46*-> 09.07.00 47*-> 18.09.01 48*-> 12.04.81 49*-> 29.02.00 28.02.01 50*-> 31.03.02 51*-> -287 52*-> 132,83870967741935483870967741935483871 53*-> 12-АПР-1971 15:00:00: Pacific -> Eastern 54*-> 14.04.03 55*-> 05.03.98 Процедура PL/SQL успешно завершена.
Если у кого-то, данный блок вызвал ошибки ничего страшного нет, просто у вас скорее всего не выставлен язык системы, об этом мы уже говорили. А, так же формат даты в самой Windows установите dd.MM.YYYY. Я думаю, что ошибок не будет. Теперь, давайте разберемся с функциями. Данные функции, работают с датами и возвращают дату, за исключением функции MONTHS_BETWEEN, которая возвращает, значение типа NUMBER. Я считаю этот блок функций очень интересным и полезным для дальнейшего применения.