Funkcje SQL pobierające bieżącą datę:
SELECT CURRENT_DATE , -- czas sesji, typ DATE CURRENT_TIMESTAMP , -- czas sesji, typ TIMESTAMP WITH TIME ZONE LOCALTIMESTAMP , -- czas sesji, typ TIMESTAMP SYSDATE , -- czas serwera, typ DATE SYSTIMESTAMP -- czas serwera, typ TIMESTAMP WITH TIME ZONE FROM dual; |
Do konwersji dat na tekst i formatowania służy funkcja TO_CHAR. Przykłady:
SELECT TO_CHAR(SYSDATE, 'Day, DDth Month YYYY' ), --Wtorek , 03RD Kwiecień 2012, TO_CHAR(SYSDATE, 'Day, DDth Month YYYY' , 'NLS_DATE_LANGUAGE=Romanian' ), --Marţi , 03RD Aprilie 2012 TO_CHAR(SYSDATE, 'FMDay, DDth Month YYYY' ), --Wtorek, 3RD Kwiecień 2012 -- FM - usuwa poprzedzające 0 przd dniem TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS' ) --2012-04-03 10:21:22 FROM dual |
Odwrotnością funkcji TO_CHAR jest TO_DATE lub TO_TIMESTAMP.
Do pobrania wartości określonego segmentu daty służy funkcja EXTRACT. Przykłady
SELECT EXTRACT(YEAR FROM SYSDATE), -- 2012 EXTRACT(DAY FROM SYSDATE) -- 3 FROM dual; |
Funkcja TRUNC przycina datę do określonej jednostki. Przykłady:
SELECT TRUNC(SYSDATE), -- ustawia godzinę na 00:00:00 TRUNC(SYSDATE, 'MM'), -- pierwszy dzień miesiąca TRUNC(SYSDATE, 'Q'), -- pierwszy dzień kwartalu TRUNC(SYSDATE, 'Y') -- pierwszy dzień roku FROM dual; |
Inne ciekawe wbudowane funkcje to ADD_MONTHS, NEXT_DAY, LAST_DAY.
SELECT ADD_MONTHS(SYSDATE, 5), -- dodaje 5 misięcy do daty ADD_MONTHS(SYSDATE, -5), -- odejmuje 5 misięcy od daty NEXT_DAY(SYSDATE,'Czw'), -- najbliższy czwartek LAST_DAY(SYSDATE) -- ostani dzień miesiąca FROM dual; |
Operacje arytmetyczne na datach (w dniach):
SELECT SYSDATE + 7, -- data "za tydzień" SYSDATE - 1, -- wczoraj SYSDATE - 2/24, -- dwie godziny wstecz SYSDATE - TRUNC(SYSDATE,'MM') -- dni od początku miesiąca FROM dual; |