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

Jak získat století z data v Oracle

S Oracle Database můžeme použít TO_CHAR(datetime) funkci vrátit století z hodnoty datetime.

K tomu můžeme použít buď CC formátovací prvek nebo SCC prvek formátu. Můžeme je zkombinovat s dalšími prvky formátu a dělat věci, jako je zobrazení pořadového čísla, hláskování století atd.

Příklad

Zde je příklad, který používá CC format element pro vrácení století z hodnoty data:

SELECT TO_CHAR(DATE '2030-12-30', 'CC')
FROM DUAL; 

Výsledek:

21

Negativní století

Můžeme použít SCC formátovací prvek pro zahrnutí znaménka minus při předávání záporného data:

SELECT TO_CHAR(DATE '-2030-12-30', 'SCC')
FROM DUAL; 

Výsledek:

-21

Pořadové číslo

Můžeme přidat TH format element pro vrácení pořadového čísla století.

SELECT TO_CHAR(DATE '2030-12-30', 'CCTH')
FROM DUAL; 

Výsledek:

21ST

Můžeme také přidat libovolný text k připojení slova „Century“:

SELECT TO_CHAR(DATE '2030-12-30', 'CCTH "Century"')
FROM DUAL; 

Výsledek:

21. století

Všimněte si, že text je obklopen dvojitými uvozovkami.

Můžeme použít velká písmena podle potřeby:

SELECT TO_CHAR(DATE '2030-12-30', 'Ccth "Century"')
FROM DUAL; 

Výsledek:

21. století

Všimněte si, že jsem ve formátu formátu napsal pouze první znak velkým. Chci říct, že jsem použil Ccth místo CCth . I když si možná myslíte, že CCth výsledkem by mělo být malé řadové číslo, takhle to nefunguje. Když to uděláme, stane se toto:

SELECT TO_CHAR(DATE '2030-12-30', 'CCth "Century"')
FROM DUAL; 

Výsledek:

21. století

V zásadě platí, že když jsou první dva znaky modelu formátu velká, výsledkem jsou velká písmena. Proto, chcete-li vytvořit velikost názvu, použijte pouze první znak formátu formátu.

Speled Century

Můžeme přidat SP formát, aby bylo století uvedeno:

SELECT TO_CHAR(DATE '2030-12-30', 'CCTHSP "Century"')
FROM DUAL; 

Výsledek:

Dvacáté první století

A můžeme použít velká písmena podle potřeby:

SELECT TO_CHAR(DATE '2030-12-30', 'Ccthsp "Century"')
FROM DUAL; 

Výsledek:

21. století

TH můžeme vynechat specifikátor formátu, pokud nechceme pořadové číslo:

SELECT TO_CHAR(DATE '2030-12-30', 'Ccsp')
FROM DUAL; 

Výsledek:

Dvacet jedna

20. vs. 21. století

Následující pravidla platí s ohledem na to, kdy je datum považováno za 20. století oproti 21. století.

  • Pokud jsou poslední 2 číslice čtyřmístného roku mezi 01 a 99 (včetně), pak je století o jednu větší než první 2 číslice daného roku.
  • Pokud jsou poslední 2 číslice čtyřmístného roku 00, pak je století stejné jako první 2 číslice daného roku.

Stejný koncept platí pro další století, jako je 13. století, 30. století atd.

Příklad:

SELECT 
    TO_CHAR(DATE '1999-12-30', 'CC') AS "1999",
    TO_CHAR(DATE '2000-12-30', 'CC') AS "2000",
    TO_CHAR(DATE '1299-12-30', 'CC') AS "1299",
    TO_CHAR(DATE '1300-12-30', 'CC') AS "1300",
    TO_CHAR(DATE '2999-12-30', 'CC') AS "2999",
    TO_CHAR(DATE '3000-12-30', 'CC') AS "3000"
FROM DUAL;
 

Výsledek:

 1999 2000 1299 1300 2999 3000 _______ _______ _______ _______ _______ _______ 20 20 13 13 30  

Pro formátování hodnot datetime v Oracle je k dispozici mnohem více prvků formátu. Úplný seznam najdete v části Seznam prvků formátu Datetime v Oracle.


  1. Funkce TO_TIMESTAMP_TZ() v Oracle

  2. MySQL:Alternativy k ORDER BY RAND()

  3. Jak nainstalovat PostgreSQL 12 na Fedoru 33

  4. Chyba PHP, MySQL:Počet sloupců neodpovídá počtu hodnot na řádku 1