Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So erhalten Sie das Jahrhundert aus einem Datum in Oracle

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.