sql >> Database >  >> RDS >> Oracle

Hoe u de datumnotatie in uw Oracle-sessie kunt wijzigen

Bij het werken met functies die datums retourneren, retourneert Oracle Database deze datums op basis van de waarde van de NLS_DATE_FORMAT parameter.

Er is ook een NLS_TIMESTAMP_FORMAT parameter en een NLS_TIMESTAMP_TZ_FORMAT parameter, die beide een datum/tijd-formaatmasker hebben dat afzonderlijk kan worden opgegeven.

Al deze parameters hebben hun standaardwaarden afgeleid van de NLS_TERRITORY parameter (die standaard afhankelijk is van het besturingssysteem).

Dus om de datumnotatie voor uw sessie te wijzigen, kunt u de NLS_TERRITORY bijwerken parameter, of werk elke parameter afzonderlijk bij.

Dit artikel geeft voorbeelden van het controleren en wijzigen van deze waarden en het bekijken van de resultaten.

Controleer de begininstelling

Laten we eerst eens kijken naar mijn huidige instelling voor de NLS_DATE_FORMAT parameter:

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

Resultaat:

 PARAMETERWAARDE __________________________ _________________________________ NLS_TERRITORY AUSTRALI 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:SSXpre AM TZR 

De waarde van mijn NLS_TERRITORY parameter is AUSTRALIA , en dus gebruiken de verschillende datetime-parameters het standaardformaatmodel voor Australië.

Deze waarde beïnvloedt hoe de datum wordt opgemaakt wanneer we bepaalde functies gebruiken. Hier is bijvoorbeeld een voorbeeld van het gebruik van SYSDATE om de huidige datum terug te geven:

SELECT SYSDATE
FROM DUAL; 

Resultaat:

04/AUG/21

De instelling wijzigen

We kunnen de ALTER SESSION . gebruiken statement om de instelling voor deze parameters te wijzigen.

We hebben de mogelijkheid om elk van deze parameters afzonderlijk te wijzigen, of de NLS_TERRITORY parameter, die elk van die parameters automatisch impliciet bijwerkt.

Wijzig de NLS_TERRITORY Parameter

Hier is een voorbeeld van het wijzigen van de NLS_TERRITORY parameter:

ALTER SESSION SET NLS_TERRITORY = 'AMERICA'; 

Resultaat:

Sessie gewijzigd.

Laten we eens kijken naar de nieuwe waarden:

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

Resultaat:

 PARAMETERWAARDE __________________________ _______________________________ NLS_TERRITORY AMERIKA 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 

We kunnen dus zien dat niet alleen het territorium is bijgewerkt, maar ook de verschillende datetime-parameters zijn bijgewerkt.

Wijzig alleen de NLS_DATE_FORMAT Parameter

Hier is een voorbeeld van het bijwerken van de NLS_DATE_FORMAT parameter:

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

Resultaat:

Sessie gewijzigd.

Laten we eens kijken naar de nieuwe waarde:

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

Resultaat:

 PARAMETERWAARDE __________________________ _______________________________ NLS_TERRITORY AMERIKA 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 

Zoals verwacht, alleen de NLS_DATE_FORMAT parameter is gewijzigd in het nieuwe formaat. De andere blijven ongewijzigd.

Wanneer we nu SYSDATE run uitvoeren , de datum wordt geretourneerd in ons nieuwe formaat, maar SYSTIMESTAMP geeft het terug met de NLS_TIMESTAMP_TZ_FORMAT formaat, dat ongewijzigd is:

SELECT 
    SYSDATE,
    SYSTIMESTAMP
FROM DUAL; 

Resultaat:

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

  1. PL/SQL-opgeslagen procedures maken met parameters in Oracle Database?

  2. COLLATION() Functie in Oracle

  3. Foreign Key naar meerdere tabellen

  4. Controleer of een tabel wordt verwezen door een externe sleutel in SQL Server met OBJECTPROPERTY()