SQL – daty, operacje na datach, wbudowane funkcje

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;
Ten wpis został opublikowany w kategorii PLSQL, SQL-ki i oznaczony tagami . Dodaj zakładkę do bezpośredniego odnośnika.

Dodaj komentarz