Quem sou eu

Minha foto
Programador por profissão, formação e opção! Interessado em tudo relacionado a computadores, menos manutenção de hardware! Linguagens (interesse e trabalho): Java, C#, C/C++, Python, Ruby, Haskell. Atualmente trabalhando como Desenvolvedor (maior parte do tempo em soluções ASP.NET)

sexta-feira, 28 de setembro de 2012

Select no PostgreSQL agrupando resultados por data.

Mais uma postagem da série do Pequeno Guia do Mochileiro do PostgreSQL.

Me pergutaram no serviço, como agrupar os resultados de um select por hora, ignorando as informações de minuto/segundo.

Segue abaixo o exemplo de como fazer esse agrupamento:
experiments=# create table test_group_date(count real, date timestamp);
CREATE TABLE
experiments=# insert into test_group_date(count, date) values (1, TIMESTAMP '2001-02-16 20:38:40');
INSERT 0 1
experiments=# insert into test_group_date(count, date) values (2, TIMESTAMP '2001-02-16 21:38:40');
INSERT 0 1
experiments=# insert into test_group_date(count, date) values (2, TIMESTAMP '2001-02-16 21:58:40');
INSERT 0 1
experiments=# insert into test_group_date(count, date) values (2, TIMESTAMP '2001-02-16 21:59:40');
INSERT 0 1
experiments=# select * from test_group_date;
 count |        date
-------+---------------------
     1 | 2001-02-16 20:38:40
     2 | 2001-02-16 21:38:40
     2 | 2001-02-16 21:58:40
     2 | 2001-02-16 21:59:40
(4 rows)

experiments=# select sum(count), date_trunc('hour', date) from test_group_date group by date_trunc('hour', date)
experiments-# ;
 sum |     date_trunc
-----+---------------------
   6 | 2001-02-16 21:00:00
   1 | 2001-02-16 20:00:00
(2 rows)

experiments=# select agrupado_por_hora.hora, agrupado_por_hora.max_val - agrupado_por_hora.min_val
from ( select date_trunc('hour', date) hora, min(date) min_val, max(date) max_val
       from test_group_date
       group by date_trunc('hour',date)
     ) as agrupado_por_hora
;
        hora         | ?column?
---------------------+----------
 2001-02-16 21:00:00 | 00:21:00
 2001-02-16 20:00:00 | 00:00:00
(2 rows)

experiments=#

Para mais detalhes sobre a função date_trunc e outras funções de data. Acesse a documentação do PostgreSQL.

Note que além da date_trunc existe a função date_part. A diferença é que a date_part retorna apenas o pedaço solicitado (ou seja, apenas a hora ou minuto, etc...).

terça-feira, 14 de fevereiro de 2012

HTML5 Rocks!

Este post é curto e simples pois o único intuito é compartilhar com vocês leitores o link do site HTML5 Rocks.

Este site possui diversos guias sobre as melhores práticas no desenvolvimento de aplicações e sites utilizando a tecnologia HTML5.

Se você pode se dar ao luxo de focar-se apenas nos navegadores mais novos (IE9, Chrome, Firefox, Safari, Opera) então considere-se sortudo pois seu código vai ficar mais simples (sem hacks mirabolantes) e seus produtos muito mais bem acabados.

A maior parte dos participantes do projeto acima são funcionários da Google, porém existem desenvolvedores independentes e de outras empresas também.

Apenas lembre-se de não desenvolver apenas para um dos browsers pois você pode limitar demais seu público alvo e não queremos que a web volte a ser o que era antes de 1996.

Abraço a todos.