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.