Vamos dar uns toques de SQL? VI

Vamos dar uns toques de SQL? VI

Criado por Pedro Pinto em 2 de Julho de 2011 | 0 comentários

Por Pedro Gaspar para o PPLWARE

Esta semana vamos aprender mais algumas funções novas, desta vez relacionadas com datas.

Vamos tentar descobrir a idade das pessoas que temos na nossa base de dados, aprender a fazer contas, entre outras coisas.

clip_image001

Para apresentar alguns exemplos utilizei a tabela que temos utilizando nas semanas anteriores (tlb_ppware) que contem os seguintes dados:

clip_image002

Começando pelo inicio, o sql é uma linguagem bastante abrangente, alem de nos permitir fazer operações com tabelas, tambem nos permite fazer operações matemáticas.

EXEMPLO1

Objectivo: Listar o nome e:

  • o valor do nascimento + 2
  • o valor do nascimento – 2
  • o valor do nascimento multiplicado por 2
  • o valor do nascimento dividido por 2

Query:

SELECT nome, nascimento +2 AS soma, nascimento -2 AS subtracao, nascimento *2 AS multiplicacao, nascimento /2 AS divisao
FROM tbl_ppware

Resultado:

clip_image004

Fazer contas com SQL e bastante fácil! Agora para complicar um pouco mais, vamos fazer contas com datas.

O próprio SQL consegue ir buscar a data actual ao sistema onde esta a ser executado, para ir buscar essa informação utilizamos a função NOW() (outras funções de data e hora podem ser consultadas aqui), a data é-nos apresentada no formato “ano-mês-dia hora:minuto:segundo”

Query:

SELECT NOW( )

Resultado:

clip_image006

Esta e a forma considerada universal de apresentar a data, e se pensar-mos bem até e a que faz mais sentido. No entanto como somos europeus e gostamos também bastante da nossa forma e-nos possível também alterar a forma como a data ira ser apresentada, para isso utilizamos a função DATE_FORMAT(), que nos permite mostrar a data de outra forma completamente a nossa escolha, podem consultar a informação completa sobre esta função aqui

EXEMPLO2

Objectivo: Apresentar a data no formato europeu

Query:

SELECT DATE_FORMAT( NOW( ) , "%d/%m/%y" ) AS DATA

Resultado:

clip_image008

Pegando novamente na nossa tabela vamos então calcular a idade das nossas pessoas ?

No lugar de utilizar o DATE_FORMAT para obter o ano actual (e assim calcular a idade) vou utilizar a funçãoYEAR(), esta função devolve-nos apenas o ano e serve plenamente para o nosso exemplo.

EXEMPLO3

Objectivo: Apresentar o nome e a idade das pessoas

Query:

SELECT nome, YEAR( NOW( ) ) - nascimento AS idade
FROM `tbl_ppware`

ou:

SELECT nome, DATE_FORMAT( NOW( ) , '%Y' ) - nascimento AS idade
FROM `tbl_ppware`

Resultado:

clip_image010

Assim como existe a função YEAR(), tambem existem a função DAY() para dias e MONTH() para meses, todas elas podem ser consultadas aqui

Com estas mesmas funções também podemos fazer contas com datas, por exemplo somar meses ou dias a uma determinada data

EXEMPLO4

Objectivo: Somar um dia, uma semana, um mês e um ano a data 21/12/2012, e apresenta-la por extenso (em inglês)

Primeiro que mais nada temos que converter esta data para um formato em que o SQL a reconheça, para isso utilizamos a função STR_TO_DATE()

Query:

SELECT DATE_FORMAT( STR_TO_DATE( '21/12/2012', '%d/%m/%Y' ) + INTERVAL 1
DAY + INTERVAL 1 WEEK + INTERVAL 1
MONTH + INTERVAL 1 YEAR, '%D %M of %Y' ) AS DATA

Resultado:

clip_image012

EXEMPLO5

Objectivo: Obter a media de idades das pessoas que temos na nossa base de dados

A media consiste em somar todos os elementos e no fim dividir pelo numero desses mesmos elementos, logo e isso mesmo que teremos que fazer, para obter a idade das pessoas que temos na nossa tabela vamos utilizar a mesma forma que utilizamos no EXEMPLO3, de seguida utilizaremos a função SUM(), para somar todos os resultados obtidos, e por fim dividimos pelo numero de elementos utilizados, para obter o numero desses exemplo usamos a função COUNT()

Query:

SELECT SUM( YEAR( NOW( ) ) - nascimento ) / COUNT( * ) AS media
FROM `tbl_ppware`

Resultado:

clip_image014

Espero que tenham gostado do artigo desta semana, para a semana há mais.

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão /  Alterar )

Google photo

Está a comentar usando a sua conta Google Terminar Sessão /  Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão /  Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão /  Alterar )

Connecting to %s