Retornar os meses no formato 01,02,03...10 usando EXTRACT

Firebird

29/12/2005

Uso Interbase 7.1 e tenho a seguinte instrução abaixo:

SELECT (EXTRACT(YEAR FROM LAN_DATA))||(EXTRACT(MONTH FROM LAN_DATA)) FROM LANCAMENTO
ORDER BY LAN_DATA

Isso me retorna: ANO e MES concatenados
Ex: 20033, 20044, 20053

Eu gostaria que o mês retornasse com um zero a esquerda, ou seja:
Ex: 200303, 200404, 200503

Os meses devem estar no formato: 01, 02, 03 e não 1, 2, 3.

Como proceder?

Obrigada.


Aline Volker

Aline Volker

Curtidas 0

Respostas

Sremulador

Sremulador

29/12/2005

acho que se você utilizar o coalese funciona...


GOSTEI 0
Thomaz_prg

Thomaz_prg

29/12/2005

acho que se você utilizar o coalese funciona...

Coalesce crio que não, pois o coalesce mostra se o valor for nulo. Ele compara, se o primeiro parametro for nulo, ele mostra o segundo. Não uso IB mas uso FB 1.5.2 e faço assim:

SELECT (EXTRACT(YEAR FROM LAN_DATA))||
(CASE
WHEN EXTRACT(MONTH FROM LAN_DATA) < 10 THEN ´0´||EXTRACT(MONTH FROM LAN_DATA)
ELSE
EXTRACT(MONTH FROM LAN_DATA)
END) 
FROM LANCAMENTO 
ORDER BY LAN_DATA


Esse código compara se o mes extraído é menor que dez e se for acrescenta um ´0´ (zero) antes.


GOSTEI 0
Gandalf.nho

Gandalf.nho

29/12/2005

Vc tb pode usar uma UDF para isso. A biblioteca RFunc tem uma função de formatação de data muito boa (semelhante a FormatDateTime do Delphi)


GOSTEI 0
POSTAR