Tag: data

Como criar listas sequenciais no PostgreSQL com a função generate_series

Essa é uma dica bem especifica, mas que provavelmente vai ser útil em algum momento na vida de um programador e/ou DBA.

Como criar uma lista sequencial a partir de dados que não existem em uma tabela? Por exemplo: eu quero criar um select que retorne uma lista de 1 a 100 (cada número em uma linha). Como fazer isso? Veja aqui o exemplo:

select generate_series(1,100) as sequencia

Acho que não precisa nem explicar né? O primeiro parâmetro do generate_series é o início da lista, e o segundo o é o fim da lista.

Quer outro exemplo? Imagine que seu gerente pediu pra totalizar as vendas diárias do mes de abril de 2012, ou seja, trazer uma lista com quanto vendeu em cada dia. Mas tem um problema: no dia 3 não vendeu nada. Como você vai exibir um total de um dado que não existe? O generate_series vai te ajudar! Veja o exemplo:

select generate_series(0,29) + date '2012-04-01' as data

O select acima vai trazer uma lista com todos os dias de Abril de 2012. E eu não precisei de tabela nenhuma pra isso.

Saiba mais aqui: http://blog.redfin.com/devblog/2008/05/fun_with_generate_series.html


Formatar datas usando o DATE_FORMAT() do MySQL

Quem já trabalhou com datas no MySQL sabe que o formato que elas são armazenadas é, algumas vezes, meio inconveniente de se trabalhar. É possível modificar esse formato utilizando de programação (PHP, por exemplo), mas é muito mais simples já trazer a data no formato certo, diretamente do banco.

O banco de dados retorna uma data no seguinte formato: 2010-03-18 00:55;23 ou talvez nesse: 2010-03-18 (sem as horas). Como podemos fazer para que ele já traga no formato desejado, por exemplo: 18/03/2010?

É bem simples. Na hora de fazer o SELECT, utilizamos a função DATE_FORMAT() do MySQL. Ela pega a data no formato original e manipula da forma que você quizer.

Exemplo 1:

SELECT *,date_format(`data`,'%d/%m/%Y') as `data_formatada` FROM `pessoas`

Nesse caso, ele pegou a data contida no campo data, converteu para formato DD/MM/YYYY e nomeou o campo com a data formatada para data_formatada.

Exemplo 2:

SELECT *,date_format(`data`,'%d-%m às %Hh%i') as `data_formatada` FROM `pessoas`

No segundo exemplo o formato mudou para DD-MM às HHhMM, Exemplo: 25/06 às 14h35.

Cada ítem da data tem um identificador, veja abaixo a lista deles:

ID     Descrição
%a     Nome da Semana Abreviado (Seg a Dom)
%b     Nome do mês Abreviado (Jan a Dez)
%c     Mês de forma numérica (1 a 12)
%D     Dia do mês com o sufixo Inglês (1st, 2nd, 3rd, …)
%d     Dia do Mês de forma numérica (01 a 31)
%e     Dia do Mês de forma numérica (1 a 31)
%f     Micro segundos (000000..999999)
%H     Horas (00 a 23)
%h     Horas (01 a 12)
%I     Horas (01 a 12)
%i     Minutos de forma numérica (00 a 59)
%j     Dia do Ano (001 a 366)
%k     Horas (0 a 23)
%l     Horas (1 a 12)
%M     Nome do mês (Janeiro a Dezembro)
%m     Mês de forma numérica (01 a 12)
%p     AM ou PM
%r     Horas, 12-horas (hh:mm:ss seguidos de AM ou PM)
%S     Segundos (00 a 59)
%s     Segundos (00 a 59)
%T     Horas, 24-horas (hh:mm:ss)
%U     Semana (00 a 53), onde Domingo é o primeiro dia da semana
%u     Semana (00 a 53), onde Segunda é o primeiro dia da semana
%V     Semana (00 a 53), onde Domingo é o primeiro dia da semana; usado com %X
%v     Semana (00 a 53), onde Segunda é o primeiro dia da semana; usado com %x
%W     Nome do dia da semana (Segunda a Domingo)
%w     Dia da semana (0=Domingo a 6=Sábado)
%X     Dia da semana onde Domingo é o primeiro dia da semana, de forma numérica com 4 dígitos, usado com %V
%x     Ano da semana, onde Segunda é o primeiro dia da semana, de forma numérica, com 4 dígitos, usado com %v
%Y     Ano numérico com 4 dígitos
%y     Ano numérico com 2 dígitos
%%     Um simples caracter “%”
%x     x, para qualquer “x” não listado acima

  • Publicidade

  • Redes Sociais

    Facebook  Twitter
  • Estatísticas

    Page Views (desde março de 2010):

    Estatísticas detalhadas
  • Novidades por e-mail!

    Digite seu e-mail:


    Fique tranquilo. Seu e-mail não será usado para outros fins, e você poderá se descadastrar quando quizer.

    Eu!

    Tiago Passos
    Todo o conteúdo desse site esta licenciado sob a licença Creative Commons 3.0 (CC BY 3.0). Você pode copiar e modificar o conteúdo desde que cite o autor.
    iDream theme by Templates Next | Powered by WordPress