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

Cómo quitar los ceros iniciales de las fechas en Oracle

En Oracle Database, puede usar el fm (modo de relleno) modificador de formato para suprimir cualquier cero inicial que pueda aplicarse a una fecha. Este modificador de formato suprime el relleno, que incluye ceros al principio y espacios en blanco al final.

Para usar el fm modificador de formato, inclúyalo en su modelo de formato cuando especifique cómo deben formatearse las fechas. Por ejemplo, cuando se usa TO_CHAR() función para formatear fechas, o en parámetros NLS como NLS_DATE_FORMAT parámetro al configurar el formato de fecha para su sesión actual.

Ejemplo

Aquí hay un ejemplo para demostrarlo:

SELECT 
    TO_CHAR(DATE '2009-08-01', 'DD-MM-YY') AS "Without fm",
    TO_CHAR(DATE '2009-08-01', 'fmDD-MM-YY') AS "With fm"
FROM DUAL;

Resultado:

   Without fm    With fm 
_____________ __________ 
01-08-09      1-8-9     

Podemos ver que el resultado original (sin el fm modificador) devuelve ceros a la izquierda para todas las partes de la fecha. En este caso, el fm El modificador suprimió el cero inicial en las tres partes de la fecha.

El fm El modificador solo afecta el resultado si realmente hay ceros a la izquierda en el resultado.

Esta es una fecha que incluye partes de la fecha que ocupan dos dígitos y, por lo tanto, no tienen ceros a la izquierda:

SELECT 
    TO_CHAR(DATE '2029-12-01', 'DD-MM-YY') AS "Without fm",
    TO_CHAR(DATE '2029-12-01', 'fmDD-MM-YY') AS "With fm"
FROM DUAL;

Resultado:

   Without fm    With fm 
_____________ __________ 
01-12-29      1-12-29    

Cómo especificar el modo de llenado solo en algunas partes de la fecha

El ejemplo anterior suprimió el cero inicial en todas las partes de la fecha. El cero inicial se eliminó del día, el mes y el año. Esto se debe a que, cuando colocamos un solo fm al comienzo del modelo de formato, suprime todos ceros iniciales subsiguientes en el resultado.

Supongamos que solo queremos eliminar el cero inicial del día y el mes, pero conservarlo en el año. En este caso, podemos hacer lo siguiente:

SELECT TO_CHAR(DATE '2009-08-01', 'fmDD-MM-fmYY')
FROM DUAL;

Resultado:

1-8-09

El fm El modificador básicamente funciona como un interruptor. Cuando incluye uno, suprime los ceros hasta el final o hasta que encuentra otro fm modificador Si hay un segundo fm modificador, los ceros a la izquierda no se suprimen más allá de ese punto, y así sucesivamente.

Esto es lo que sucede cuando incluimos tres fm modificadores:uno antes de cada parte de la fecha:

SELECT TO_CHAR(DATE '2009-08-01', 'fmDD-fmMM-fmYY')
FROM DUAL;

Resultado:

1-08-9

Entonces, en este caso, el fm el modificador estaba básicamente habilitado, luego deshabilitado y luego habilitado de nuevo.

Parámetros NLS

También puede especificar el modo de llenado en sus parámetros NLS, como el NLS_DATE_FORMAT parámetro al configurar el formato de fecha para su sesión actual.

Ejemplo:

ALTER SESSION SET NLS_DATE_FORMAT = 'fmDD-MM-fmRR';

SELECT DATE '2009-08-07' FROM DUAL;

Resultado:

7-8-09