Níže jsou uvedeny dvě funkce, které lze použít k vrácení dne z data v databázi Oracle.
EXTRACT() Funkce
EXTRACT(datetime) Funkce se používá k extrahování různých částí data a času z hodnoty datetime. To zahrnuje den.
Zde je příklad:
SELECT EXTRACT(DAY FROM DATE '2037-10-25')
FROM DUAL; Výsledek:
25
Je DAY klíčové slovo, které extrahuje část dne z data. Další části data můžeme získat změnou na příslušné klíčové slovo. Například YEAR , MONTH , HOUR , MINUTE , atd.
Funkci můžeme použít i s jinými hodnotami data a času, jako je TIMESTAMP , atd.
TO_CHAR(datetime) Funkce
Můžeme také použít TO_CHAR(datetime) fungovat jako alternativní metoda k získání dne z data.
Tato funkce přijímá jako svůj první argument hodnotu datetime nebo interval a jako druhý argument model formátu. Funkce pak převede hodnotu na datový typ VARCHAR2 v zadaném formátu.
Model formátu určuje formát, pro který má být vrácena hodnota datetime/interval. Formátový model se skládá z jednoho nebo víceprvků formátu. To nám umožňuje pečlivě vytvářet výsledky tak, aby odrážely náš požadovaný formát.
Pokud chceme vrátit pouze den, můžeme použít některý z prvků formátu pro extrakci dne.
Den v měsíci
Chcete-li získat den v měsíci (mezi 1-31), použijte DD prvek formátu:
SELECT TO_CHAR(DATE '2037-10-03', 'DD')
FROM DUAL; Výsledek:
03
Název celého dne
Chcete-li získat název celého dne, použijte DAY :
SELECT TO_CHAR(DATE '2037-10-03', 'DAY')
FROM DUAL; Výsledek:
SATURDAY
Název krátkého dne
Chcete-li získat zkrácený název dne, použijte DY :
SELECT TO_CHAR(DATE '2037-10-03', 'DY')
FROM DUAL; Výsledek:
SAT
Den v roce
Chcete-li získat den v roce (mezi 1-366), použijte DDD prvek formátu:
SELECT TO_CHAR(DATE '2037-10-03', 'DDD')
FROM DUAL; Výsledek:
276
Den v týdnu
Chcete-li získat den v týdnu (mezi 1-7), použijte D prvek formátu:
SELECT TO_CHAR(DATE '2037-10-03', 'D')
FROM DUAL; Výsledek:
6
Tento prvek formátu závisí na území NLS relace. Hodnota NLS_TERRITORY mého systému parametr je AUSTRALIA , a proto je sobota považována za šestý den v týdnu.
Co se stane, když změním hodnotu svého NLS_TERRITORY parametr na AMERICA a znovu spusťte stejný dotaz:
ALTER SESSION SET NLS_TERRITORY = 'AMERICA';
SELECT TO_CHAR(DATE '2037-10-03', 'D')
FROM DUAL; Výsledek:
7
Sobota je tentokrát považována za sedmý den v týdnu.