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

Come ottenere il secolo da una data in Oracle

Con Oracle Database, possiamo utilizzare TO_CHAR(datetime) funzione per restituire il secolo da un valore datetime.

Per fare ciò, possiamo utilizzare il CC elemento di formato o SCC elemento di formato. Possiamo combinarli con altri elementi di formato per fare cose come visualizzare il numero ordinale, sillabare il secolo, ecc.

Esempio

Ecco un esempio che utilizza il CC elemento format per restituire il secolo da un valore di data:

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

Risultato:

21

Secoli negativi

Possiamo usare il SCC elemento di formato per includere il segno meno quando si passa una data negativa:

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

Risultato:

-21

Numero ordinale

Possiamo aggiungere il TH format per restituire il numero ordinale del secolo.

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

Risultato:

21ST

Possiamo anche aggiungere un testo arbitrario per aggiungere la parola "Century":

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

Risultato:

21ST Century

Nota che il testo è racchiuso tra virgolette.

Possiamo usare le maiuscole come richiesto:

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

Risultato:

21ST Century

Si noti che nel modello di formato ho messo in maiuscolo solo il primo carattere. Quello che voglio dire è che ho usato Ccth invece di CCth . Mentre potresti pensare che CCth dovrebbe risultare in un numero ordinale minuscolo, non è così che funziona. Ecco cosa succede quando lo facciamo:

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

Risultato:

21ST Century

Fondamentalmente, quando i primi due caratteri del modello di formato sono maiuscoli, il risultato è maiuscolo. Pertanto, per produrre il titolo maiuscolo, metti in maiuscolo solo il primo carattere del modello di formato.

Secolo di Farro

Possiamo aggiungere il SP elemento di formato per scrivere il secolo:

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

Risultato:

TWENTY-FIRST Century

E possiamo usare le maiuscole come richiesto:

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

Risultato:

Twenty-First Century

Possiamo omettere il TH identificatore di formato se non vogliamo il numero ordinale:

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

Risultato:

Twenty-One

XX e XXI secolo

Le seguenti regole si applicano a quando una data è considerata nel 20° secolo rispetto al 21° secolo.

  • Se le ultime 2 cifre di un anno a 4 cifre sono comprese tra 01 e 99 (incluso), il secolo è uno maggiore delle prime 2 cifre di quell'anno.
  • Se le ultime 2 cifre di un anno a 4 cifre sono 00, il secolo è uguale alle prime 2 cifre di quell'anno.

Lo stesso concetto si applica ad altri secoli, come il 13° secolo, il 30° secolo, ecc.

Esempio:

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;

Risultato:

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

Sono disponibili molti altri elementi di formato per la formattazione dei valori datetime in Oracle. Per un elenco completo, vedere Elenco degli elementi del formato DateTime in Oracle.