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.
Para apresentar alguns exemplos utilizei a tabela que temos utilizando nas semanas anteriores (tbl_pplware) que contem os seguintes dados:
Começando pelo inicio, o sql é uma linguagem bastante abrangente, alem de nos permitir fazer operações com tabelas, também 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:
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:
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:
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ção YEAR(), 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:
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:
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:
Espero que tenham gostado do artigo desta semana, para a semana ha mais.