----------------------------------------------------------------------
-- LABORATORIUM 3
----------------------------------------------------------------------
----------------FUNKCJE OPERUJACE NA DATACH-------------------------
--W poleceniach nie dotyczących żadnej konkretnej tabeli wykorzystaj
--tabelę dual. Wartości dla przedziałów i znaczników czasowych
--wpisuj w apostrofach. Pamietaj o kolejności i separatorach zapisu
--'YYYY-MM-DD HH:MI:SS.p'
--7. Wyświetl aktualną datę i czas.
SELECT sysdate, current_date, current_timestamp, systimestamp from dual;
--8. Wyświetl przedział 10 lat i 10 miesięcy; 10 dni, 10 godzin,
-- 10 minut, 10 sekund i 10/100 sekundy; oraz znacznik czasowy
-- obejmujący łącznie oba te przedziały (Wykorzystaj INTERVAL
-- oraz TIMESTAMP).
SELECT INTERVAL '10-10' YEAR TO MONTH,INTERVAL '10 10:10:10:10 DAY TO
SECOND, TIMESTAMP '10-10-10 10:10:10.10;
--9. Jaka data będzie za 100 dni, a jaka była 100 dni temu?
SELECT SYSDATE, SYSDATE+100,SYSDATE-100 FROM DUAL;
9a SELECT SYSDATE, SYSDATE+5, SYSDATE-5, SYSDATE+5-SYSDATE;
13-03-24 13-03-29
13-03-19
5
--10. Jaka data będzie za 10 lat, 10 miesięcy, 10 lat i 10 miesięcy?
-- (tym razem dodaj przedział)
SELECT SYSDATE AS DZISIAJ, SYSDATE+INTERVAL '10' MONTH,SYSDATE+INTERVAL
'10' YEAR, SYSDATE+INTERVAL '10-10' YEAR TO MONTH FROM DUAL;
--11. Wyświetl datę i czas jaki będzie za 10 dni, 10 godzin i
-- 10 minut (SYSTIMESTAMP i INTERVAL).
SELECT SYSTIMESTAMP, SYSTIMESTAMP+INTERVAL '10 10:10' DAY TO MINUTE FROM
DUAL;
--13. Wyświetl aktualny rok i aktualną sekundę. (Extract)
SELECT EXTRACT(YEAR FROM CURRENT_DATE) AS ROK, EXTRACT (SECOND FROM
SYSTIMESTAMP) AS SEKUNDA FROM DUAL;
--14. Jaka data będzie za 7 miesięcy? (Add_months)
SELECT ADD_MONTHS(CURRENT_DATE, 7) FROM DUAL;
--14a Data i 95 lat czyli 1140 miesiecy OD DZISIAJ
SELECT EXTRACT ( MONTH FROM ADD_MONTHS (CURRENT_DATE, -1140)) FROM
DUAL;
--14b wyswietlimy staz pracy pracowników, w dniach, miesiacach i latach
SELECT SYSDATE-DATA_ZATR AS 'W DNIACH',
MONTHS_BETWEEN(SYSDATE,DATA_ZATR) AS 'W MIESIACACH', TRUNC
(MONTHS_BETWEEN(SYSDATE,DATA_ZATR)/12,2 ) FROM PRACOWNICY;
--14c to samo tylko ze z extract a nie trunc
SELECT (YEAR FROM SYSDATE) – EXTRACT ( YEAR FROM DATA_ZATR) FROM
PRACOWNICY;
--14d data nastepnej niedzieli
SELECT NEXT_DAY(SYSDATE, 7) FROM DUAL
Data ostatniego dnia miesiaca z aktualnej daty
SELECT LAST_DAY(SYSTEDATE)
--15. Jaki będzie ostatni dzień tego miesiąca? (Last_day)
SELECT LAST_DAY(sysdate) FROM DUAL;
19a Wyswietl ta date 24 marzec 2013
15:40:50.40
SELECT TO_CHAR (SYSDATE, 'dd MONTH YYYY Day HH24:MI:SS') FROM DUAL;
19b wyswietl date urodzenia i nazwisko studentow urodzonych w niedziele
SELECT NAZWISKO DATA_URODZENIA, TO_CHAR(DATA_URODZENIA,'DAY') AS
DZIEN_URODZENIA WHERE RTRIM TO_CHAR(DATA_URODZENIA,'DAY')='NIEDZIELA'
FROM STUDENCI;
19c podaj dzien tygodnia jaki będzie za 50 godzin, 45 minut i 20 sekund.
SELECT TO_CHAR(SYSTIMESTAMP+INTERVAL '50:45:20' HOUR TO SECONDS, 'DAY')
FROM DUAL;
19d znajdz studentow którzy dzisiaj obchodzą urodziny
select NAZWISKO, DATA_URODZENIA FROM STUDENCI WHERE TO_CHAR(SYSDATE,'DD
MM')=TO_CHAR(DATA_URODZENIA,'DD MM');
--27. Wyświetl jaki dzień tygodnia i który kwartał roku był '1-09-1939'.
SELECT TO_CHAR(TO_DATE('01-09-1939','DD-MM-YYYY'),'DAY Q DDD') FROM DUAL;
--28. Podaj Ilu studentów urodziło się w niedzielę.