Retornar os meses no formato 01,02,03...10 usando EXTRACT
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.
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
Curtidas 0
Respostas
Sremulador
29/12/2005
acho que se você utilizar o coalese funciona...
GOSTEI 0
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
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