Tento článek obsahuje běžné příklady formátování dat v databázi Oracle.
Výchozí formát data pro vaši relaci je určen různými inicializačními parametry NLS (zde je návod, jak je zkontrolovat). Tyto parametry můžete využít k výstupu formátování podle národního prostředí.
Můžete také použít funkce jako TO_CHAR(number)
převést data na řetězec a naformátovat je přesně tak, jak chcete.
Výchozí formát data
Když v Oracle vrátíte datum, ve výchozím nastavení se vrátí ve výchozím formátu data pro aktuální relaci.
Příklad:
SELECT DATE '2030-12-10' FROM DUAL;
Výsledek:
10/DEC/30
V tomto případě je výchozí formát data mé relace DD/MON/RR
a výsledek to odráží.
Formát můžete změnit buď změnou NLS_TERRITORY
parametr (který implicitně mění další parametry, jako jsou parametry datetime), nebo změna NLS_DATE_FORMAT
parametr přímo.
Zde je to, co se stane, když změním NLS_TERRITORY
parametr do jiné oblasti:
ALTER SESSION SET NLS_TERRITORY = 'Germany';
SELECT DATE '2030-12-10' FROM DUAL;
Výsledek:
10.12.30
Výchozí formát data byl aktualizován, aby odrážel formát pro dané národní prostředí.
Existují také další parametry NLS typu datum a čas, například NLS_TIME_FORMAT
, NLS_TIME_TZ_FORMAT
, NLS_TIMESTAMP_FORMAT
a NLS_TIMESTAMP_TZ_FORMAT
na které si musíte být vědomi při změně formátů data a času.
Pokud chcete změnit výchozí formát data a času pro aktuální relaci, přečtěte si také část Jak změnit formát data relace.
TO_CHAR()
Funkce
Ton TO_CHAR(datetime)
funkce přijímá hodnotu datetime a vrací řetězec naformátovaný způsobem, který určíte.
Zde je rychlý příklad:
SELECT TO_CHAR(DATE '2035-09-26', 'Dy, DD Month YYYY')
FROM DUAL;
Výsledek:
Wed, 26 September 2035
Zde funkce vrátila datum, které bylo zadáno v prvním argumentu, ve formátu určeném druhým argumentem.
Druhý argument poskytuje model formátu. Model formátu se může skládat z jednoho nebo více prvků formátu. Například Dy
je prvek formátu, stejně jako DD
, Month
, atd.
Pokud neurčíte formát, bude vrácen ve výchozím formátu pro relaci.
Seznam prvků formátu, které lze použít k formátování hodnot datetime pomocí této funkce, najdete v tomto Úplném seznamu prvků formátu Datetime v Oracle.
Níže jsou uvedeny konkrétnější příklady.
Vraťte název dne
V případě potřeby můžete vrátit jednotlivé části data. Můžete například vrátit pouze název dne, pouze název měsíce atd. Vše, co musíte udělat, je použít příslušný prvek formátu jako jediný prvek formátu v modelu formátu.
Zde je příklad vrácení názvu dne:
SELECT TO_CHAR(DATE '2035-09-26', 'Day')
FROM DUAL;
Výsledek:
Wednesday
V tomto případě jsem vrátil celé jméno dne.
Můžeme použít Dy
jako v předchozím příkladu vrátit název krátkého dne:
SELECT TO_CHAR(DATE '2035-09-26', 'Dy')
FROM DUAL;
Výsledek:
Wed
Vraťte název měsíce
Zde je příklad vrácení názvu měsíce:
SELECT TO_CHAR(DATE '2035-09-26', 'Month')
FROM DUAL;
Výsledek:
September
A krátký název měsíce:
SELECT TO_CHAR(DATE '2035-09-26', 'Mon')
FROM DUAL;
Výsledek:
September
Rozlišovat malá a velká písmena
V předchozích příkladech jsme pro názvy dne a měsíce použili první písmeno velké.
Alternativně můžeme použít všechna velká písmena k vrácení názvu dne a měsíce velkými písmeny a všechna malá písmena k vrácení malých písmen.
SELECT
TO_CHAR(DATE '2035-09-26', 'DY, Dy, dy')
FROM DUAL
UNION ALL
SELECT
TO_CHAR(DATE '2035-09-26', 'DAY, Day, day')
FROM DUAL
UNION ALL
SELECT
TO_CHAR(DATE '2035-09-26', 'MON, Mon, mon')
FROM DUAL
UNION ALL
SELECT
TO_CHAR(DATE '2035-09-26', 'MONTH, Month, month')
FROM DUAL;
Výsledek:
WED, Wed, wed WEDNESDAY, Wednesday, wednesday SEP, Sep, sep SEPTEMBER, September, september
Jazyk
NLS_DATE_LANGUAGE
Parametr se používá k určení jazyka částí data, které jsou hláskovány (jako jsou názvy dnů a názvy měsíců). Výchozí hodnota tohoto parametru je odvozena z NLS_LANGUAGE
parametr.
Zde je příklad aktualizace NLS_DATE_LANGUAGE
parametr a poté vrátí formátované datum, které obsahuje název dne a název měsíce:
ALTER SESSION SET NLS_DATE_LANGUAGE = 'Spanish';
SELECT TO_CHAR(DATE '2035-09-26', 'Dy, DD Month YYYY')
FROM DUAL;
Výsledek:
Mié, 26 Septiembre 2035
Jazyk lze také explicitně zadat v rámci TO_CHAR()
samotná funkce. To vám umožní dočasně přepsat výchozí nastavení jazyka pro aktuální relaci, aniž byste tato nastavení ovlivnili.
Příklad:
ALTER SESSION SET NLS_DATE_LANGUAGE = 'English';
SELECT TO_CHAR(
DATE '2035-09-26',
'Dy, DD Month YYYY',
'NLS_DATE_LANGUAGE = Spanish'
)
FROM DUAL;
Výsledek:
Mié, 26 Septiembre 2035
V tomto příkladu jsem nastavil svou aktuální relaci tak, aby používala angličtinu, a poté jsem spustil dotaz na výstup data pomocí španělštiny.
Jak již bylo zmíněno, uvedení data ve španělštině neovlivnilo nastavení angličtiny. Abych to demonstroval, spustil jsem následující dotaz bezprostředně po něm (beze změny NLS_DATE_LANGUAGE
parametr).
SELECT TO_CHAR(
DATE '2035-09-26',
'Dy, DD Month YYYY'
)
FROM DUAL;
Výsledek:
Wed, 26 September 2035
Podle očekávání je výsledek v angličtině, což je výchozí jazyk pro aktuální relaci.