Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak zmienić format daty w sesji Oracle

Podczas pracy z funkcjami zwracającymi daty, Oracle Database zwraca te daty na podstawie wartości NLS_DATE_FORMAT parametr.

Istnieje również NLS_TIMESTAMP_FORMAT parametr i NLS_TIMESTAMP_TZ_FORMAT parametr, z których oba mają maskę formatu daty i czasu, którą można określić osobno.

Wszystkie te parametry mają swoje domyślne wartości pochodzące z NLS_TERRITORY parametr (który domyślnie jest zależny od systemu operacyjnego).

Aby zmienić format daty sesji, możesz zaktualizować NLS_TERRITORY parametr lub jawnie zaktualizuj każdy parametr osobno.

Ten artykuł zawiera przykłady sprawdzania i zmieniania tych wartości oraz przeglądania wyników.

Sprawdź ustawienia początkowe

Najpierw sprawdźmy moje obecne ustawienie dla 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'
    ); 

Wynik:

 WARTOŚĆ 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:RSXFFpre AM TZ> 

Wartość mojego NLS_TERRITORY parametr to AUSTRALIA , a więc różne parametry datetime używają domyślnego modelu formatu dla Australii.

Ta wartość wpływa na formatowanie daty, gdy używamy niektórych funkcji. Na przykład, oto przykład użycia SYSDATE aby zwrócić aktualną datę:

SELECT SYSDATE
FROM DUAL; 

Wynik:

04/sierpień/21

Zmień ustawienie

Możemy użyć ALTER SESSION oświadczenie, aby zmienić ustawienia tych parametrów.

Mamy możliwość zmiany każdego z tych parametrów z osobna lub zmiany NLS_TERRITORY parametr, który automatycznie aktualizuje każdy z tych parametrów niejawnie.

Zmień NLS_TERRITORY Parametr

Oto przykład zmiany NLS_TERRITORY parametr:

ALTER SESSION SET NLS_TERRITORY = 'AMERICA'; 

Wynik:

Sesja zmieniona.

Sprawdźmy nowe wartości:

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

Wynik:

 WARTOŚĆ PARAMETRU __________________________ ________________________________ NLS_TERRITORY AMERYKA NLS_DATE_FORMAT DD-MON-RR NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR 
Widzimy więc, że nie tylko zaktualizowano terytorium, ale także różne parametry daty i czasu.

Zmień tylko NLS_DATE_FORMAT Parametr

Oto przykład aktualizacji NLS_DATE_FORMAT parametr:

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

Wynik:

Sesja zmieniona.

Sprawdźmy nową wartość:

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

Wynik:

 WARTOŚĆ PARAMETRU __________________________ ________________________________ NLS_TERRITORY AMERYKA NLS_DATE_FORMAT rr-mm-dd NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR 
 Zgodnie z oczekiwaniami tylko NLS_DATE_FORMAT parametr został zmieniony na nowy format. Pozostałe pozostają niezmienione.

Teraz, gdy uruchamiamy SYSDATE , data jest zwracana w naszym nowym formacie, ale SYSTIMESTAMP zwraca go za pomocą NLS_TIMESTAMP_TZ_FORMAT format, który pozostaje niezmieniony:

SELECT 
    SYSDATE,
    SYSTIMESTAMP
FROM DUAL; 

Wynik:

 SYSDATE SYSTIMESTAMP ___________ _________________________________________ 21-08-09 09-SIE-21 07.22.35.402453000 PM -04:00 

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Parser dla Oracle SQL

  2. Jaki jest limit rozmiaru argumentu podprogramu varchar2 PL/SQL w Oracle?

  3. używanie wartości oddzielonych przecinkami wewnątrz klauzuli IN dla kolumny NUMBER

  4. Jak mogę znaleźć, które tabele odwołują się do danej tabeli w Oracle SQL Developer?

  5. Dostrajanie instrukcji SQL w programie SQL Developer