sql >> Database >  >> RDS >> Oracle

Hoe de maand op te maken in Romeinse cijfers in Oracle

Oracle Database biedt ons de mogelijkheid om de maand te retourneren vanaf een datum met Romeinse cijfers.

Als de maand bijvoorbeeld augustus is, zou de decimale waarde 08 zijn en het equivalent in Romeinse cijfers VIII.

De manier om dit te doen is door de RM . te gebruiken of rm format element in uw format mask. Dat zal de maand opmaken met Romeinse cijfers in respectievelijk hoofdletters of kleine letters.

Het specificeren van het datumformaat kan op verschillende plaatsen.

Specificeer Romeinse cijfers bij het aanroepen van een functie

Hier is een voorbeeld van het specificeren van Romeinse cijfers bij het opmaken van een datum met de TO_CHAR(datetime) functie:

SELECT TO_CHAR(DATE '2035-08-11', 'DD RM YYYY') FROM DUAL;

Resultaat:

11 VIII 2035

In dit geval heb ik Romeinse cijfers in hoofdletters opgegeven.

Om kleine letters te specificeren, verandert u gewoon de RM naar rm :

SELECT TO_CHAR(DATE '2035-08-11', 'DD rm YYYY') FROM DUAL;

Resultaat:

11 viii 2035

Zie Lijst met datum/tijd-indelingselementen in Oracle voor een volledige lijst met opmaakelementen die kunnen worden gebruikt om datum/tijd-waarden op te maken.

Specificeer Romeinse cijfers voor de hele sessie

U kunt ook het datumformaat voor uw hele sessie instellen. Dit kan handig zijn als u veel functieaanroepen moet doen die de datum retourneren.

Er zijn drie relevante parameters:NLS_DATE_FORMAT , NLS_TIMESTAMP_FORMAT , en NLS_TIMESTAMP_TZ_FORMAT .

Deze parameters hebben standaardwaarden die zijn afgeleid van de NLS_TERRITORY parameter (die een standaardwaarde heeft die afhankelijk is van het besturingssysteem). U kunt indien nodig echter elk van deze parameters voor de huidige sessie bijwerken.

Hier is een voorbeeld van het bijwerken van deze parameters om een ​​datumnotatie te gebruiken die Romeinse cijfers bevat voor het maandgedeelte:

ALTER SESSION SET NLS_DATE_FORMAT = 'DD RM YYYY';
ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'DD RM YYYY HH12:MI:SSXFF AM';
ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT = 'DD RM YYYY HH12:MI:SSXFF AM TZR';

Resultaat:

Session altered.


Session altered.


Session altered.

Als ik nu een functie aanroep die een datetime-waarde retourneert, krijg ik de maand in Romeinse cijfers.

Voorbeeld:

SELECT TO_CHAR(SYSDATE) FROM DUAL;

Resultaat:

10 VIII 2021

Merk op dat ik geslaagd ben voor SYSDATE naar TO_CHAR() .

Als ik dat niet doe, wordt de NLS_DATE_FORMAT parameter werkt niet:

SELECT SYSDATE FROM DUAL;

Resultaat:

2021-08-10 20:04:49

Dit probleem bestaat niet bij andere datumnotaties. Ik kwam het alleen tegen met Romeinse cijfers.

Een meer permanente oplossing

Bovenstaande voorbeelden zijn tijdelijke oplossingen voor het retourneren van de maand in Romeinse cijfers. Voor een meer permanente oplossing kunnen de NLS-parameters worden ingesteld op databaseniveau, in het initialisatieparameterbestand of in omgevingsvariabelen. Zie Methoden voor het instellen van NLS-parameters en hun prioriteiten voor voorbeelden hiervan, evenals hun prioriteitsvolgorde ten opzichte van elkaar.


  1. Een lijst met database-e-mailaccounts krijgen in SQL Server (T-SQL)

  2. Vind en vervang de volledige mysql-database

  3. Een gids voor PubNub-functies

  4. Kan de postgreSQL niet verbinden met psycopg2