Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como remover zeros à esquerda de datas no Oracle


No Oracle Database, você pode usar o fm (modo de preenchimento) modificador de formato para suprimir quaisquer zeros à esquerda que possam ser aplicados a uma data. Este modificador de formato suprime o preenchimento, que inclui zeros à esquerda e espaços em branco à direita.

Para usar o fm modificador de formato, inclua-o em seu modelo de formato ao especificar como as datas devem ser formatadas. Por exemplo, ao usar o TO_CHAR() função para formatar datas ou em parâmetros NLS como o NLS_DATE_FORMAT parâmetro ao definir o formato de data para sua sessão atual.

Exemplo


Segue um exemplo para demonstrar:
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 o resultado original (sem o fm modificador) retorna zeros à esquerda para todas as partes da data. Neste caso, o fm modificador suprimiu o zero à esquerda em todas as três partes da data.

O fm modificador só afeta o resultado se houver zeros à esquerda no resultado.

Aqui está uma data que inclui partes de data que ocupam dois dígitos e, portanto, não têm zeros à esquerda:
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    

Como especificar o modo de preenchimento apenas em algumas partes da data


O exemplo acima suprimiu o zero à esquerda em todas as partes da data. O zero à esquerda foi removido do dia, mês e ano. Isso porque, quando colocamos um único fm no início do modelo de formato, ele suprime todos zeros à esquerda subsequentes no resultado.

Suponha que queremos apenas remover o zero à esquerda do dia e do mês, mas mantê-lo no ano. Neste caso, podemos fazer o seguinte:
SELECT TO_CHAR(DATE '2009-08-01', 'fmDD-MM-fmYY')
FROM DUAL;

Resultado:
1-8-09

O fm modificador basicamente funciona como um switch. Quando você inclui um, ele suprime zeros até o final ou até encontrar outro fm modificador. Se houver um segundo fm modificador, os zeros à esquerda não são suprimidos além desse ponto e assim por diante.

Veja o que acontece quando incluímos três fm modificadores – um antes de cada parte da data:
SELECT TO_CHAR(DATE '2009-08-01', 'fmDD-fmMM-fmYY')
FROM DUAL;

Resultado:
1-08-9

Então, neste caso, o fm modificador foi basicamente ativado, depois desativado e ativado novamente.

Parâmetros NLS


Você também pode especificar o modo de preenchimento em seus parâmetros NLS, como o NLS_DATE_FORMAT parâmetro ao definir o formato de data para sua sessão atual.

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

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

Resultado:
7-8-09