sql >> Base de Datos >  >> RDS >> Oracle

Cómo obtener el siglo de una fecha en Oracle

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.