Em 22/08/12, Tiago Adami<[email protected]> escreveu:
> Em 22 de agosto de 2012 00:05, Matheus de Oliveira
> <[email protected]> escreveu:
>>
>> Em 21/08/2012 21:27, "Edson - Listas" <[email protected]> escreveu:
>>
>>
>>>
>>> Olá Pessoal,
>>>
>>> Como extrair o mês e ano em um campo data no PostgreSql?
>>> Exemplo: (08/2012)
>>>
>>> Extrair só a data eu consegui...
>>>
>>> select EXTRACT(MONTH from a.dt_mov) mes,sum(a.vlr_final)total
>>> from movdirhe a
>>> where a.dt_mov between '01/01/2010' and '21/08/2012'
>>>
>>> group by EXTRACT(MONTH from a.dt_mov)
>>>
>>> order by mes asc
>>>
>>> Edson
>>>
>>
>> Dê uma olhada na função to_char.
>
> Resumindo pelo exemplo:
>
> SELECT LTRIM(TO_CHAR( EXTRACT(MONTH FROM a.dt_mov), '00' )) || '/' ||
> LTRIM(TO_CHAR( EXTRACT(YEAR FROM a.dt_mov), '0000' )) AS MES_ANO
>
> NOTAS:
> * Não sei se era a sua dúvida, mas valores texto não são 'somados' e
> sim 'concatenados' com o operador 'pipe-pipe' = ||
> * Se você não está limitando sua consulta a um intervalo dentro de
> apenas 1 ano, ordenar somente por mês não trará a ordem cronológica
> exata. O correto seria ordenar por ano e mês nesta ordem, ou
> simplesmente pelo campo 'a.dt_mov'.
>


Mas neste caso não fica mais simples fazer:

SELECT to_char(a.dt_mov, 'MM/YYYY') mes_ano, sum(a.vlr_final) total
FROM movdirhe a
WHERE a.dt_mov between '01/01/2010' and '21/08/2012'
GROUP BY date_trunc('month', a.dt_mov)
ORDER BY date_trunc('month', a.dt_mov);

ou algo parecido?

Osvaldo
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a