sql >> Databáze >  >> RDS >> Oracle

Jak formátovat data v Oracle

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.


  1. Přetrvávající UUID v PostgreSQL pomocí JPA

  2. Použijte FILE_IDEX() k vrácení ID databázového souboru na serveru SQL Server

  3. SQLite - Vložit data

  4. Jak mohu otestovat, zda existuje sloupec v tabulce pomocí příkazu SQL