Met Oracle Database kunnen we de TO_CHAR(datetime)
. gebruiken functie om de eeuw uit een datetime-waarde te retourneren.
Om dit te doen, kunnen we ofwel de CC
format-element, of de SCC
formaat element. We kunnen deze combineren met andere formaatelementen om dingen te doen zoals het rangtelwoord weergeven, de eeuw spellen, enz.
Voorbeeld
Hier is een voorbeeld dat de CC
. gebruikt format-element om de eeuw uit een datumwaarde terug te geven:
SELECT TO_CHAR(DATE '2030-12-30', 'CC')
FROM DUAL;
Resultaat:
21
Negatieve eeuwen
We kunnen de SCC
. gebruiken formaatelement om het minteken op te nemen bij het passeren van een negatieve datum:
SELECT TO_CHAR(DATE '-2030-12-30', 'SCC')
FROM DUAL;
Resultaat:
-21
Rangnummer
We kunnen de TH
. toevoegen format-element om het rangtelwoord van de eeuw terug te geven.
SELECT TO_CHAR(DATE '2030-12-30', 'CCTH')
FROM DUAL;
Resultaat:
21ST
We kunnen ook willekeurige tekst toevoegen om het woord "Century" toe te voegen:
SELECT TO_CHAR(DATE '2030-12-30', 'CCTH "Century"')
FROM DUAL;
Resultaat:
21ST Century
Merk op dat de tekst tussen dubbele aanhalingstekens staat.
We kunnen hoofdletters gebruiken zoals vereist:
SELECT TO_CHAR(DATE '2030-12-30', 'Ccth "Century"')
FROM DUAL;
Resultaat:
21ST Century
Merk op dat ik alleen het eerste teken in het formaatmodel met een hoofdletter heb geschreven. Wat ik bedoel is dat ik Ccth
. heb gebruikt in plaats van CCth
. Hoewel je misschien denkt dat CCth
zou moeten resulteren in een rangtelwoord in kleine letters, zo werkt het niet. Dit is wat er gebeurt als we dat doen:
SELECT TO_CHAR(DATE '2030-12-30', 'CCth "Century"')
FROM DUAL;
Resultaat:
21ST Century
Kortom, wanneer de eerste twee tekens van het formaatmodel hoofdletters zijn, is het resultaat hoofdletters. Schrijf daarom, om hoofdletters en kleine letters te produceren, alleen het eerste teken van het formaatmodel met een hoofdletter.
Gespelde eeuw
We kunnen de SP
. toevoegen formaatelement om de eeuw te beschrijven:
SELECT TO_CHAR(DATE '2030-12-30', 'CCTHSP "Century"')
FROM DUAL;
Resultaat:
TWENTY-FIRST Century
En we kunnen hoofdletters gebruiken zoals vereist:
SELECT TO_CHAR(DATE '2030-12-30', 'Ccthsp "Century"')
FROM DUAL;
Resultaat:
Twenty-First Century
We kunnen de TH
. weglaten formaatspecificatie als we het volgnummer niet willen:
SELECT TO_CHAR(DATE '2030-12-30', 'Ccsp')
FROM DUAL;
Resultaat:
Twenty-One
20e vs 21e eeuw
De volgende regels zijn van toepassing met betrekking tot wanneer een datum wordt beschouwd als in de 20e eeuw versus de 21e eeuw.
- Als de laatste 2 cijfers van een jaartal van 4 cijfers tussen 01 en 99 liggen (inclusief), dan is de eeuw één groter dan de eerste 2 cijfers van dat jaar.
- Als de laatste 2 cijfers van een jaartal van 4 cijfers 00 zijn, dan is de eeuw gelijk aan de eerste 2 cijfers van dat jaar.
Hetzelfde concept is van toepassing op andere eeuwen, zoals de 13e eeuw, 30e eeuw, enz.
Voorbeeld:
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;
Resultaat:
1999 2000 1299 1300 2999 3000 _______ _______ _______ _______ _______ _______ 20 20 13 13 30 30
Er zijn veel meer formaatelementen beschikbaar voor het opmaken van datetime-waarden in Oracle. Zie Lijst van Datetime Format Elements in Oracle voor een volledige lijst.