Mit Oracle Database können wir den TO_CHAR(datetime)
verwenden Funktion, um das Jahrhundert aus einem datetime-Wert zurückzugeben.
Dazu können wir entweder den CC
verwenden format-Element oder das SCC
Formatelement. Wir können diese mit anderen Formatelementen kombinieren, um beispielsweise die Ordnungszahl anzuzeigen, das Jahrhundert zu buchstabieren usw.
Beispiel
Hier ist ein Beispiel, das den CC
verwendet Formatelement, um das Jahrhundert aus einem Datumswert zurückzugeben:
SELECT TO_CHAR(DATE '2030-12-30', 'CC')
FROM DUAL;
Ergebnis:
21
Negative Jahrhunderte
Wir können den SCC
verwenden format-Element, um das Minuszeichen einzuschließen, wenn ein negatives Datum übergeben wird:
SELECT TO_CHAR(DATE '-2030-12-30', 'SCC')
FROM DUAL;
Ergebnis:
-21
Ordnungsnummer
Wir können den TH
hinzufügen format-Element, um die Ordinalzahl des Jahrhunderts zurückzugeben.
SELECT TO_CHAR(DATE '2030-12-30', 'CCTH')
FROM DUAL;
Ergebnis:
21ST
Wir können auch beliebigen Text hinzufügen, um das Wort „Century“ anzuhängen:
SELECT TO_CHAR(DATE '2030-12-30', 'CCTH "Century"')
FROM DUAL;
Ergebnis:
21ST Century
Beachten Sie, dass der Text in doppelte Anführungszeichen eingeschlossen ist.
Wir können die Großschreibung nach Bedarf verwenden:
SELECT TO_CHAR(DATE '2030-12-30', 'Ccth "Century"')
FROM DUAL;
Ergebnis:
21ST Century
Beachten Sie, dass ich im Formatmodell nur das erste Zeichen groß geschrieben habe. Was ich meine ist, dass ich Ccth
verwendet habe statt CCth
. Während Sie vielleicht denken, dass CCth
sollte eine kleine Ordnungszahl ergeben, so funktioniert es nicht. Folgendes passiert, wenn wir das tun:
SELECT TO_CHAR(DATE '2030-12-30', 'CCth "Century"')
FROM DUAL;
Ergebnis:
21ST Century
Wenn die ersten beiden Zeichen des Formatmodells Großbuchstaben sind, ist das Ergebnis grundsätzlich Großbuchstaben. Um die Groß-/Kleinschreibung des Titels zu erzeugen, schreiben Sie daher nur das erste Zeichen des Formatmodells groß.
Buchstabiertes Jahrhundert
Wir können den SP
hinzufügen Formatelement, um das Jahrhundert ausgeschrieben zu haben:
SELECT TO_CHAR(DATE '2030-12-30', 'CCTHSP "Century"')
FROM DUAL;
Ergebnis:
TWENTY-FIRST Century
Und wir können die Großschreibung nach Bedarf verwenden:
SELECT TO_CHAR(DATE '2030-12-30', 'Ccthsp "Century"')
FROM DUAL;
Ergebnis:
Twenty-First Century
Wir können das TH
weglassen Formatbezeichner, wenn wir die Ordnungszahl nicht wollen:
SELECT TO_CHAR(DATE '2030-12-30', 'Ccsp')
FROM DUAL;
Ergebnis:
Twenty-One
20. vs. 21. Jahrhundert
Die folgenden Regeln gelten in Bezug darauf, ob ein Datum im 20. Jahrhundert oder im 21. Jahrhundert liegt.
- Wenn die letzten 2 Ziffern einer 4-stelligen Jahreszahl zwischen 01 und 99 (einschließlich) liegen, dann ist das Jahrhundert um eins größer als die ersten 2 Ziffern dieser Jahreszahl.
- Wenn die letzten 2 Ziffern einer 4-stelligen Jahreszahl 00 sind, dann ist das Jahrhundert dasselbe wie die ersten 2 Ziffern dieser Jahreszahl.
Das gleiche Konzept gilt für andere Jahrhunderte, wie das 13. Jahrhundert, das 30. Jahrhundert usw.
Beispiel:
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;
Ergebnis:
1999 2000 1299 1300 2999 3000 _______ _______ _______ _______ _______ _______ 20 20 13 13 30 30
Es stehen viele weitere Formatelemente zum Formatieren von Datetime-Werten in Oracle zur Verfügung. Eine vollständige Liste finden Sie unter Liste der Datetime-Formatelemente in Oracle.