Calcular Diferença em Timestamp no Postgres

10 12 2008

O Problema

Descobrir a  quantidade de dias e horas que se passaram entre dois timestamp. Continue lendo »





Postgres – LPAD AVG Date_Part e Cast

26 11 2008

O Problema

Com base em uma tabela meu cliente necessitava extrair um relatório com as notas médias mensais que ele estava recebendo dos seus clientes. Continue lendo »





UPDATE com CASE WHEN POSTGRES

28 10 2008

Saudações a todos

Nos últimos como vocês sabem tenho tentado fazer o máximo de coisas possíveis usado SQL, estou surpreso com o que é possível ser feito só com SQL.

O Problema

Tinha que alterar o tipo de uma coluna de boolean para integer, facil né:

ALTER TABLE tabela ALTER COLUMN a TYPE integer

porém 😦

ERROR: column "a" cannot be cast to type "pg_catalog.int4"

Os tipos não são compatíveis. Continue lendo »





Case When SQL / Postgres

10 10 2008

Saudações

Não o Battisti não morreu, apenas diminui a quantidade de posts pois nos últimos dias tenho encarados desafios realmente desafiadores, inclua nesse bolo o aprendizado de uma nova linguagem de programação, é meus amigos estou começando a mexer com Java pra Web, sendo assim, não se assustem se nesse santuário do PHP começarem a pipocar posts sobre Java :).

Sobre o CASE WHEN é o seguinte: tenho tentado fazer mais coisas via SQL a fim de otimizar um pouco o desempenho dos sistemas e nisso aprendi a usar esse cara, ai vai um exemplo:

SELECT
   cod,
   data
   case
      when tipo = 1 then 'Abacate'
      when tipo = 2 then 'Abobrinha'
   end as nome
FROM vegetais

Isso ai é um If disfarçado :), vc pode fazer coisas mais complexas como por exemplo fazer uma outra SQL dentro do THEN de acordo com os dados que venham de um campo, exemplo:

SELECT
   cod,
   data
   case
      when tipo = 1 then
      select valor from abacate
      when tipo = 2 then
      select valor from abobrinha
   end as valor
FROM vegetais

Nesse caso o valor da abobrinha e do abacate são armazenados em tabelas separadas então de acordo com o tipo o valor deve vir de sua respectiva tabela.

Bom é isso ai. Bom Sorte até mais e tchau!





Calculando a Idade via Postgres

17 09 2008

Problema

Quero sabe a idade dos meus clientes!

Solução

SELECT
      extract(year from age(pessoa.pss_nascimento))
FROM pessoa

A coluna pss_nascimento deve ser do tipo date, caso não seja será necessário converte usando o comendo timestamp vide referência

Referência

http://pt.wikibooks.org/wiki/PostgreSQL_Pr%C3%A1tico/Fun%C3%A7%C3%B5es_Internas/Data_e_Hora