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.