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