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

Jak formátovat měsíc v římských číslicích v Oracle

Oracle Database nám poskytuje možnost vrátit měsíc z data pomocí římských číslic.

Pokud je například měsíc srpen, jeho desetinná hodnota by byla 08 a jeho ekvivalent římským číslem by byl VIII.

Způsob, jak toho dosáhnout, je použít RM nebo rm formátovací prvek ve vaší masce formátu. Tím se měsíc naformátuje pomocí římských číslic na velká nebo malá písmena.

Zadání formátu data lze provést na několika místech.

Zadání římských číslic při volání funkce

Zde je příklad zadání římských číslic při formátování data pomocí znaku TO_CHAR(datetime) funkce:

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

Výsledek:

11 VIII 2035

V tomto případě jsem zadal velká římská čísla.

Chcete-li zadat malá písmena, jednoduše změňte RM do rm :

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

Výsledek:

11 viii 2035

Úplný seznam prvků formátu, které lze použít k formátování hodnot datetime, naleznete v části Seznam prvků formátu Datetime v Oracle.

Určení římských číslic pro celou relaci

Alternativně můžete nastavit formát data pro celou relaci. To může být užitečné, pokud potřebujete provést mnoho volání funkcí, která vrátí datum.

Existují tři relevantní parametry:NLS_DATE_FORMAT , NLS_TIMESTAMP_FORMAT a NLS_TIMESTAMP_TZ_FORMAT .

Tyto parametry mají výchozí hodnoty, které jsou odvozeny z NLS_TERRITORY parametr (který má výchozí hodnotu, která je závislá na operačním systému). V případě potřeby však můžete kterýkoli z těchto parametrů pro aktuální relaci aktualizovat.

Zde je příklad aktualizace těchto parametrů na použití formátu data, který obsahuje římské číslice pro část měsíce:

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';

Výsledek:

Session altered.


Session altered.


Session altered.

Nyní, když zavolám funkci, která vrací hodnotu datetime, dostanu měsíc v římských číslicích.

Příklad:

SELECT TO_CHAR(SYSDATE) FROM DUAL;

Výsledek:

10 VIII 2021

Všimněte si, že jsem prošel SYSDATE na TO_CHAR() .

Pokud to neudělám, NLS_DATE_FORMAT parametr se neprojeví:

SELECT SYSDATE FROM DUAL;

Výsledek:

2021-08-10 20:04:49

U jiných formátů data tento problém neexistuje. Setkal jsem se s tím pouze u římských číslic.

Trvalejší řešení

Výše uvedené příklady představují dočasná řešení pro vrácení měsíce v římských číslicích. Pro trvalejší řešení lze parametry NLS nastavit na úrovni databáze, v souboru inicializačních parametrů nebo v proměnných prostředí. Viz Metody nastavení parametrů NLS a jejich priorit, kde jsou uvedeny příklady těchto parametrů a také jejich vzájemné pořadí priorit.


  1. Vytvořte si úžasné seznamy sami nebo GitHub jako notebook

  2. Jak rozdělit řetězec na SQL Server

  3. 2 způsoby, jak vrátit řádky, které obsahují pouze nealfanumerické znaky v MySQL

  4. co se stane ve fázi přechodu adopce v R12.2