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

Agregue el indicador ordinal a una fecha en Oracle

En Oracle Database, podemos usar el TH elemento de formato para agregar el sufijo del número ordinal al resultado de un TO_CHAR() operación al formatear fechas.

Por ejemplo, en lugar de generar 10 Feb podríamos generar 10 Feb . O, en lugar de generar 21 century , podemos generar 21st century . Lo mismo se aplica a los componentes de fecha deletreados. Por ejemplo, en lugar de Twenty One , podemos generar Twenty One .

Ejemplo

Aquí hay un ejemplo para demostrarlo:

SELECT TO_CHAR(DATE '2030-12-01', 'Ddth Month')
FROM DUAL;

Resultado:

01st December

Podemos usar el fm modificador de formato para eliminar el cero inicial si es necesario:

SELECT TO_CHAR(DATE '2030-12-01', 'fmDdth Month')
FROM DUAL;

Resultado:

1st December

Tenga en cuenta que las mayúsculas del número ordinal están determinadas por el elemento de formato relevante (en este caso, el Dd parte), no el TH sufijo.

Esto es lo que sucede cuando cambiamos la segunda d a mayúsculas:

SELECT TO_CHAR(DATE '2030-12-01', 'fmDDth Month')
FROM DUAL;

Resultado:

1st December

Entonces, aunque proporcionamos el th sufijo en minúsculas, no tuvo efecto en el resultado. El uso de mayúsculas fue determinado por el elemento de formato (sin incluir el fm modificador de formato).

También podemos agregar el número ordinal al devolver otros componentes de la fecha, como el siglo:

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

Resultado:

21st Century

Fechas deletreadas

Podemos agregar el SP elemento de formato para tener la parte de la fecha deletreada:

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

Esto es lo que sucede cuando omitimos TH especificador de formato:

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

Resultado:

Twenty-One