Con Oracle Database, podemos usar TO_CHAR(datetime)
función para devolver el siglo a partir de un valor de fecha y hora.
Para hacer esto, podemos usar el CC
elemento de formato, o el SCC
elemento de formato. Podemos combinarlos con otros elementos de formato para hacer cosas como mostrar el número ordinal, deletrear el siglo, etc.
Ejemplo
Aquí hay un ejemplo que usa el CC
elemento de formato para devolver el siglo a partir de un valor de fecha:
SELECT TO_CHAR(DATE '2030-12-30', 'CC')
FROM DUAL;
Resultado:
21ST
Siglos negativos
Podemos usar el SCC
elemento de formato para incluir el signo menos al pasar una fecha negativa:
SELECT TO_CHAR(DATE '-2030-12-30', 'SCC')
FROM DUAL;
Resultado:
-21
Número ordinal
Podemos agregar el TH
elemento de formato para devolver el número ordinal del siglo.
SELECT TO_CHAR(DATE '2030-12-30', 'CCTH')
FROM DUAL;
Resultado:
21ST
También podemos agregar texto arbitrario para agregar la palabra "Century":
SELECT TO_CHAR(DATE '2030-12-30', 'CCTH "Century"')
FROM DUAL;
Resultado:
21ST Century
Tenga en cuenta que el texto está entre comillas dobles.
Podemos usar mayúsculas según sea necesario:
SELECT TO_CHAR(DATE '2030-12-30', 'Ccth "Century"')
FROM DUAL;
Resultado:
21ST Century
Tenga en cuenta que solo puse en mayúscula el primer carácter en el modelo de formato. Lo que quiero decir es que usé Ccth
en lugar de CCth
. Si bien puedes pensar que CCth
debería dar como resultado un número ordinal en minúsculas, no es así como funciona. Esto es lo que sucede cuando hacemos eso:
SELECT TO_CHAR(DATE '2030-12-30', 'CCth "Century"')
FROM DUAL;
Resultado:
21ST Century
Básicamente, cuando los dos primeros caracteres del modelo de formato están en mayúsculas, el resultado está en mayúsculas. Por lo tanto, para producir mayúsculas y minúsculas, solo escriba en mayúscula el primer carácter del modelo de formato.
Siglo deletreado
Podemos agregar el SP
elemento de formato para tener el siglo deletreado:
SELECT TO_CHAR(DATE '2030-12-30', 'CCTHSP "Century"')
FROM DUAL;
Resultado:
21ST Century
Y podemos usar mayúsculas según sea necesario:
SELECT TO_CHAR(DATE '2030-12-30', 'Ccthsp "Century"')
FROM DUAL;
Resultado:
21ST Century
Podemos omitir el TH
especificador de formato si no queremos el número ordinal:
SELECT TO_CHAR(DATE '2030-12-30', 'Ccsp')
FROM DUAL;
Resultado:
Twenty-One
Siglos XX y XXI
Las siguientes reglas se aplican con respecto a cuándo se considera que una fecha está en el siglo XX o en el siglo XXI.
- Si los últimos 2 dígitos de un año de 4 dígitos están entre 01 y 99 (ambos inclusive), entonces el siglo es uno mayor que los primeros 2 dígitos de ese año.
- Si los últimos 2 dígitos de un año de 4 dígitos son 00, entonces el siglo es el mismo que los primeros 2 dígitos de ese año.
El mismo concepto se aplica a otros siglos, como el siglo XIII, el siglo XX, etc.
Ejemplo:
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;
Resultado:
1999 2000 1299 1300 2999 3000 _______ _______ _______ _______ _______ _______ 20 20 13 13 30 30
Hay muchos más elementos de formato disponibles para formatear valores de fecha y hora en Oracle. Consulte la Lista de elementos de formato de fecha y hora en Oracle para obtener una lista completa.