background image

---------------------------------------------------------------------- 
--               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 

--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; 

background image

--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ę.