// você está lendo...

Desenvolvimento

MySQL utilizando melhor o servidor – Data e hora


Economize tempo durante a programação utilizando melhor o servidor MySQL (ou qualquer outro que você utilize), você pode conseguir isto conhecendo melhor as funcionalidades do MySQL, tentarei abordar situações reais do cotidiano de um programador.

Funções

Provavelmente você conheça diversas funções em PHP que permitam manipular data e hora e por este motivo você acostumou-se a trabalhar manipulação de data e hora diretamente no PHP, mas, você pode fazer toda a manipulação no banco de dados.

Imagine que um usuário adicionou uma nova notícia no sistema (qualquer sistema é só um exemplo), provavelmente a função ou script para realizar a gravação deste registro seja algo parecida com esta.

1
2
3
4
5
6
if( mysql_query( "INSERT INTO tabela_noticias ( `id`, `titulo`, `horario` ) VALUES ( NULL, '". $_POST['titulo'] ."', '". date( "Y-m-d H:i:s" ) ."' )" ) )
{
echo "Registro adicionado com sucesso";
}else{
echo "Não foi possível adicionar o registro";
}

A parte que nos interessa é a instrução SQL, mais precisamente a data e hora em que foi adicionada a noticia. Note que foi utilizada a função date do PHP, mas, poderíamos simplificar as coisas e deixar o script um pouco mais ágil trocando a instrução SQL anterior por esta.

1
2
3
INSERT INTO tabela_noticias
 VALUES 
( NULL, '". $_POST['titulo'] ."', NOW() )

Observe que troquei a função date por NOW(), uma função do MySQL (funciona em diversos SGBDs). Esta função retorna a data e hora atual no servidor MySQL e programando desta forma você diminui o tempo de processamento do PHP, claro, é imperceptível a diferença mas, dependendo da complexidade do sistema você notará uma grande diferença no tempo de processamento.

Conhecendo mais

Em alguns casos você precisa retornar em uma consulta apenas registros de determinado mês, como por exemplo somente os registros deste mês, uma consulta assim pode ser feita da seguinte forma.

1
2
3
SELECT * 
FROM tabela_noticias 
WHERE MONTH( `horario` ) = MONTH( NOW() )

Note que é uma consulta bem simples e que você não precisa informar nada além das funções MONTH e NOW, você já conheceu a função NOW, então nos resta a função MONTH, ela é responsável por retornar o mês de uma data. Os valores retornados serão 1 à 12 representando Janeiro à Dezembro.

Talvez você já esteja se perguntando “Mas e se eu precisar retornar os registros de 1 ou 2 meses atrás?”, bom, neste caso poderemos fazer um cálculo simples, direto no MySQL (sim, dá pra fazer cálculos matemáticos no MySQL).

Neste caso podemos resolver de forma simples, dois meses tem em média 60 dias, sendo assim, podemos utilizar a função DATE_ADD() fazer a seguinte consulta para retornar registro de dois meses atrás.

1
2
3
SELECT * 
FROM tabela_noticias 
WHERE MONTH( `horario` ) = MONTH( ADD_DATE( NOW(), -60 DAYS )  )

A mesma consulta mas, utilizando DATE_SUB, que é mais indicada para este caso até mesmo por uma questão de organização já que o nome da função já explica o que está fazendo nesta instrução.

1
2
3
SELECT * 
FROM tabela_noticias 
WHERE MONTH( `horario` ) = MONTH( DATE_SUB( NOW(), -60 DAYS )  )

Você também poderia querer retornar os registros de um ano específico ou do ano passado. E para isso poderia utilizar a função YEAR.

Para retornar registros de um ano especifico, neste caso o ano de 2007

1
2
3
SELECT * 
FROM tabela_noticias 
WHERE YEAR( `horario` ) = 2007

Para retornar registros de um ano anterior, neste caso o ano passado

1
2
3
SELECT * 
FROM tabela_noticias 
WHERE YEAR( `horario` ) = YEAR( DATE_SUB( NOW(), -365 DAYS) )

Conclusão

Trabalhar com datas no MySQL acaba sendo mais simples que trabalhar no PHP, facilita bastante a organização dos dados e o melhor de tudo é que diminui a quantidade de linhas de código na programação PHP já que toda a manipulação das datas ficam por conta do MySQL.

Compare Preços de: games, PS2, PS3, Playstation, Wii, iPod no JáCotei.

Ofertas válidas até a meia noite de hoje
Pendrive Kingston 4 Gb Original Frete R$10,   00 Sedex
Pendrive Kingston 4 Gb Original Frete R$10, 00 Sedex
Mais info»
R$ 22.99
até 18x de 1.72
Mini Pendrive Trancend 4gb Jetflash T3 Flash Drive 4 Gb Frgr
Mini Pendrive Trancend 4gb Jetflash T3 Flash Drive 4 Gb Frgr
Mais info»
R$ 34.70
até 18x de 2.60
Pendrive Kingston Dt101 G2 4 Gb   Original,    Lacrado,    Usb 2.0
Pendrive Kingston Dt101 G2 4 Gb Original, Lacrado, Usb 2.0
Mais info»
R$ 18.99
até 18x de 1.42
Mini Pendrive Super Talent Pico C 4gb   Nf   Gar   Sem Frete
Mini Pendrive Super Talent Pico C 4gb Nf Gar Sem Frete
Mais info»
R$ 40.00
até 18x de 3.00
Mini Pendrive Super Talent Pico C 8gb   Nf   Gar   Sem Frete
Mini Pendrive Super Talent Pico C 8gb Nf Gar Sem Frete
Mais info»
R$ 64.00
até 18x de 4.80
Mini Pendrive Transcend Jetflash T5 4gb Frete Grátis Brasil
Mini Pendrive Transcend Jetflash T5 4gb Frete Grátis Brasil
Mais info»
R$ 34.70
até 18x de 2.60
Vitrine Tecnoblog  

Discussion

7 Responses to “MySQL utilizando melhor o servidor – Data e hora”

  1. Muito boas as dicas! Retornarei ao blog ;-)

    Posted by Maicon | 10/03/2009, 19:13
  2. A unica coisa que tem q se cuidar é o tempo de resposta de uma query utilizando-se de funções proprias do mysql pode gerar milisegundos de latencia e dependendo do tamanho do projeto isto faz toda diferenca…

    Mas cada caso um caso e as dicas são bem valias :)

    Posted by otavio nogueira | 02/04/2009, 21:43
  3. Excelentes dicas, mas e seu quiser exibir a data e as noticias que foram postadas nessa data por hora ( lembrando que o formato da data no mysql é datetime) tipo assim:

    25/08/09
    15:00 – titulo da nótícia 01
    14:25 – titulo da nótícia 01
    14:00 – titulo da nótícia 01
    13:15 – titulo da nótícia 01
    13:00 – titulo da nótícia 01

    24/08/09
    15:00 – titulo da nótícia 01
    14:25 – titulo da nótícia 01
    14:00 – titulo da nótícia 01
    13:15 – titulo da nótícia 01
    13:00 – titulo da nótícia 01

    Posted by Junior | 25/08/2009, 23:01
  4. Olá, gostaria se vc pode me ajudar em uma dúvida!

    Estou começando agora na área de Web sites e programação, e estou precisando fazer uma página editável, (tipo a de um blog), então, não conheço muito em linguagens php, javascript e etc!
    Mas eu entendo de lógica de programação!
    então peguei um editor de página online em javascipt e depois juntei com o php, usando desse jeito

    $mensagem = $_POST ["edit1"];
    $msg = “$mensagem”;

    então salvei em um documento .txt

    $ponteiro = fopen (“pagina.txt”,”w”);
    fwrite ($ponteiro, “$msg\n\n”);
    fclose ($ponteiro);

    então coloquei o include em um frame desejado

    beleza da tudo certo, mas quando eu abro a página aparece o texto, mas a formatação não!
    isso porque o código fica gravado todo errado, ele adiciona uma \ contra barra antes de toda ” aspas.

    color=\”#ccffcc\”>

    acho que o erro não é na primeira página pois coloquei ao invés de action post uma função java

    action=”javascript:alert(‘FIELD 1:\n’ + document.f1.richEdit0.value

    então escrevo e recarrego a página então aparece no alerta o código certo sem as contra barras.

    Ufa! se vc achou que sou confuso, acredite, estou bem mais confuso que vc!
    Não faço a minima idéia do que devo fazer!

    desculpe-me por ter postado esse comentário em uma área não apropriada, gostaria de lhe enviar um e-mail, mas não achei o mesmo.

    por favor que estiver disposto a me ajudar, responda este comentário, posso te esplicar melhor ou até mesmo posso te enviar as páginas por e-mail.
    ou etc!

    Dês de já agradeço!
    desculpe-me por ser incoveniente!
    Deeck

    Posted by Deeck | 03/01/2010, 22:12

Post a comment

Recentes

caneca cafe canon 3
Caneca de café em formato de lentes Canon
agosto 31, 2010
By John-Henrique
Rapid Share Premium grátis
Rapid Share Premium grátis
agosto 23, 2010
By John-Henrique
TV LCD 42″
Promoção “Quer ganhar uma TV LCD 42″?”
agosto 22, 2010
By John-Henrique
Resident Evil 4 – Afterlife
Resident Evil 4 – Afterlife
agosto 20, 2010
By John-Henrique
invencoes-extranhas (32)
Invenções estranhas II
agosto 19, 2010
By John-Henrique
invencoes-extranhas (15)
Invenções estranhas
agosto 18, 2010
By John-Henrique
metallica presidio
Diferenças entre Presídio e Trabalho
agosto 16, 2010
By John-Henrique
Mercedes-Benz SCL600 6
Mercedes-Benz SCL600
agosto 15, 2010
By John-Henrique
Como baixar videos da internet
julho 21, 2010
By Carlos Camacho
vlc media player
VLC Media Player – Assista vídeos e filmes com maior facilidade
julho 19, 2010
By Carlos Camacho