Jak wyciągnąć rok z daty


Jak wyciągnąć rok z daty?

Najprostsze zapytanie to:
select extract(year from date '2015-10-01') from dual
a więc można użyć w zapytaniu funkcji  extract(year from dtpocz) 

w podobny sposób możemy wyciągnąć
miesiąc - extract(month from dtpocz)
dzień - extract(day from dtpocz)
godzina - extract(hour from dtpocz)
minuta - extract(minute from dtpocz)
sekundy - extract(second from dtpocz)

Przy czym kolumna dtpocz może być typu datetime dla wyciągania roku, miesiąca i dnia, natomiast musi być typu timestamp dla godzin, minut i sekund.

Prawidłowo wykonają się zapytania poniżej:

select extract(year from sysdate) from dual;
select extract(month from sysdate) from dual;
select extract(day from sysdate) from dual;

Nie możemy jednak użyć tej funkcji w ten sposób:

SELECT EXTRACT(HOUR FROM SYSDATE) FROM dual;

Dostaniemy wówczas błąd:
-- ERROR at line 1:
-- ORA-30076: invalid extract field for extract source
Możemy wykonać to np. w taki sposób:

select extract(hour from to_timestamp('2016-02-26 09:01:45',
'YYYY-MM-DD HH24:MI:SS')) from dual;
lub
select extract(hour from timestamp '2016-02-26 09:01:45') from dual;

Możemy użyć też tak extract(year from date '2016-02-26 09:01:45')

Możemy więc w prosty sposób wyciągnąć z pola datetime pola

select EXTRACT(year from sysdate) as ROK, EXTRACT(month from sysdate) as MIESIAC, EXTRACT(day from sysdate)  as DZIEN from dual;

-- ROK    MIESIAC   DZIEN
-- 2016   2         25

Funkcja EXTRACT może być używana w wersji Oracle 9i, Oracle 10g, Oracle 11g, Oracle 12c.

Brak komentarzy:

Prześlij komentarz