sql >> Database teknologi >  >> RDS >> Oracle

Sådan får du århundredet fra en date i Oracle

Med Oracle Database kan vi bruge TO_CHAR(datetime) funktion til at returnere århundredet fra en datetime-værdi.

For at gøre dette kan vi bruge enten CC formatelementet eller SCC formatelement. Vi kan kombinere disse med andre formatelementer for at gøre ting som at vise ordenstal, stave århundredet osv.

Eksempel

Her er et eksempel, der bruger CC formatelement for at returnere århundredet fra en datoværdi:

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

Resultat:

21

Negative århundreder

Vi kan bruge SCC formatelement for at inkludere minustegnet, når en negativ dato passerer:

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

Resultat:

-21

Ord. nummer

Vi kan tilføje TH formatelement for at returnere århundredets ordenstal.

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

Resultat:

21ST

Vi kan også tilføje vilkårlig tekst for at tilføje ordet "Century":

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

Resultat:

21ST Century

Bemærk, at teksten er omgivet af dobbelte anførselstegn.

Vi kan bruge store bogstaver efter behov:

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

Resultat:

21ST Century

Bemærk, at jeg kun skrev det første tegn med stort i formatmodellen. Hvad jeg mener er, at jeg brugte Ccth i stedet for CCth . Selvom du måske tror, ​​at CCth skulle resultere i småt ordenstal, det er ikke sådan det virker. Her er, hvad der sker, når vi gør det:

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

Resultat:

21ST Century

Dybest set, når de første to tegn i formatmodellen er store bogstaver, er resultatet store bogstaver. Derfor skal du kun skrive det første tegn i formatmodellen med stort bogstav.

Stavet århundrede

Vi kan tilføje SP formatelement for at få århundredet stavet:

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

Resultat:

TWENTY-FIRST Century

Og vi kan bruge store bogstaver efter behov:

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

Resultat:

Twenty-First Century

Vi kan udelade TH formatangivelse, hvis vi ikke vil have ordenstal:

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

Resultat:

Twenty-One

20. vs. 21. århundreder

Følgende regler gælder med hensyn til, hvornår en dato anses for at være i det 20. århundrede versus det 21. århundrede.

  • Hvis de sidste 2 cifre i et 4-cifret årstal er mellem 01 og 99 (inklusive), så er århundredet et større end de første 2 cifre i det pågældende år.
  • Hvis de sidste 2 cifre i et 4-cifret årstal er 00, er århundredet det samme som de første 2 cifre i det pågældende år.

Det samme koncept gælder for andre århundreder, såsom det 13. århundrede, 30. århundrede osv.

Eksempel:

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;

Resultat:

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

Der er mange flere formatelementer tilgængelige til formatering af datetime-værdier i Oracle. Se Liste over DateTime Format Elements i Oracle for en komplet liste.


  1. Mysql-databasesynkronisering mellem to databaser

  2. Hvordan kan jeg importere en JSON-fil til PostgreSQL?

  3. Sådan håndteres flere objekter ved at bruge Objekt Explorer Detail Windows i SSMS - SQL Server / TSQL Tutorial Del 22

  4. Sådan får du de seneste funktioner i Office 365