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.