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

Jak změnit formát data v Oracle Session

Při práci s funkcemi, které vracejí data, Oracle Database vrací tato data na základě hodnoty NLS_DATE_FORMAT parametr.

K dispozici je také NLS_TIMESTAMP_FORMAT parametr a NLS_TIMESTAMP_TZ_FORMAT parametr, oba mají masku formátu data a času, kterou lze zadat samostatně.

Všechny tyto parametry mají své výchozí hodnoty odvozené z NLS_TERRITORY parametr (který je ve výchozím nastavení závislý na operačním systému).

Chcete-li tedy změnit formát data pro svou relaci, můžete aktualizovat NLS_TERRITORY nebo explicitně aktualizujte každý parametr jednotlivě.

Tento článek poskytuje příklady kontroly a změny těchto hodnot a zobrazení výsledků.

Zkontrolujte počáteční nastavení

Nejprve zkontrolujeme mé aktuální nastavení pro NLS_DATE_FORMAT parametr:

SELECT
    PARAMETER,
    VALUE
FROM V$NLS_PARAMETERS
WHERE PARAMETER IN (
    'NLS_TERRITORY',
    'NLS_DATE_FORMAT',
    'NLS_TIMESTAMP_FORMAT',
    'NLS_TIMESTAMP_TZ_FORMAT'
    ); 

Výsledek:

 Hodnota parametru __________________________ _________________________________ nls_territory Australia nls_date_format dd/mon/rr nls_timestamp_format dd/mon/rr Hh12:mi:ssxff am nls_timestamp_tz_format dd/mon/rr hh12:mI:/ss am thfff am am am am am am am am am am am. 

Hodnota mého NLS_TERRITORY parametr je AUSTRALIA , a tak různé parametry datetime používají výchozí model formátu pro Austrálii.

Tato hodnota ovlivňuje způsob formátování data, když používáme určité funkce. Zde je například příklad použití SYSDATE vrátit aktuální datum:

SELECT SYSDATE
FROM DUAL; 

Výsledek:

04/AUG/21

Změnit nastavení

Můžeme použít ALTER SESSION pro změnu nastavení těchto parametrů.

Máme možnost změnit každý z těchto parametrů jednotlivě nebo změnit NLS_TERRITORY parametr, který automaticky implicitně aktualizuje každý z těchto parametrů.

Změňte NLS_TERRITORY Parametr

Zde je příklad změny NLS_TERRITORY parametr:

ALTER SESSION SET NLS_TERRITORY = 'AMERICA'; 

Výsledek:

Relace změněna.

Pojďme zkontrolovat nové hodnoty:

SELECT
    PARAMETER,
    VALUE
FROM V$NLS_PARAMETERS
WHERE PARAMETER IN (
    'NLS_TERRITORY',
    'NLS_DATE_FORMAT',
    'NLS_TIMESTAMP_FORMAT',
    'NLS_TIMESTAMP_TZ_FORMAT'
    ); 

Výsledek:

 HODNOTA PARAMETRU __________________________ _______________________________ NLS_TERRITORY AMERIKA NLS_DATE_FORMAT HMPHTZRR NLS_DATE_FORMAT DD-MON-RR SSDDFFX MON. TIMESTAMP. 

Vidíme tedy, že nejenže bylo aktualizováno území, ale také byly aktualizovány různé parametry data a času.

Změňte pouze NLS_DATE_FORMAT Parametr

Zde je příklad aktualizace NLS_DATE_FORMAT parametr:

ALTER SESSION SET NLS_DATE_FORMAT = 'rr-mm-dd'; 

Výsledek:

Relace změněna.

Pojďme zkontrolovat novou hodnotu:

SELECT
    PARAMETER,
    VALUE
FROM V$NLS_PARAMETERS
WHERE PARAMETER IN (
    'NLS_TERRITORY',
    'NLS_DATE_FORMAT',
    'NLS_TIMESTAMP_FORMAT',
    'NLS_TIMESTAMP_TZ_FORMAT'
    ); 

Výsledek:

 HODNOTA PARAMETRU ___________________________ _______________________________ NLS_TERRITORY AMERIKA NLS_DATE_FORMAT rr-mm-d d NLS_FFDD MONHMISTAMP. X.- FF RR MON. 

Podle očekávání pouze NLS_DATE_FORMAT parametr byl změněn na nový formát. Ostatní zůstávají nezměněny.

Nyní, když spustíme SYSDATE , datum je vráceno v našem novém formátu, ale SYSTIMESTAMP vrátí jej pomocí NLS_TIMESTAMP_TZ_FORMAT formát, který se nemění:

SELECT 
    SYSDATE,
    SYSTIMESTAMP
FROM DUAL; 

Výsledek:

 SYSDATE SYSTIMESTAMP ____________ __________________________________________ 21-08-09 09-AUG-21 07.22.35 04:05 07.22.33 40:00 
  1. Psql seznam všech tabulek

  2. Jak vytvořit databázi v MySQL Workbench pomocí GUI

  3. Jaký je nejlepší způsob řízení verzí uložených procedur serveru SQL?

  4. Jak se připojit ke vzdálené Oracle DB pomocí PL/SQL Developer?