Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

charlesschaefer

manipulação de datas pelo mysql, inclusive com soma, etc

Recommended Posts

Bom, vi que muita gente precisa de trabalhar com datas que vêm do banco de dados, eu muitas vezes também preciso.

Hoje fui dar uma lida no manual do mysql, e vi que ele tem boas, muito boas funções para manipulação de datas.

 

Procure no manual por TO_DAYS, FROM_DAYS, SEC_TO_TIME e TIME_TO_SEC.

 

Muita gente sem conhecer essas funções convertem as datas para números, ou criam três campos diferentes para a data, para assim conseguirem fazer a soma com php.

 

Abaixo deixo um exemplo simples (simples mesmo, 15minutos :P) de uma agenda de eventos.....

 

Não encontrei nada no fórum que falasse sobre essas funções, então acho que será de grande utilidade conhecê-las.

Editado: Se o mané aki tivesse feito uma simples busca por TO_DAYS na busca do fórum teria encontrado uma porrada de posts... :P Mas td bem, fica a dica para fazer a procura antes de postar exemplos tbm....

 

segue a agenda de eventos:

 

tabela e alguns eventos:

CREATE TABLE IF NOT EXISTS eventos(	id tinyint NOT NULL auto_increment,	data DATE NOT NULL DEFAULT "0000-00-00",	evento VARCHAR(200) NOT NULL,	primary key (id))auto_increment=1;INSERT INTO eventos VALUES (null, "2006-10-11","Encontro Mineiro De Software Livre"), 	(null, "2006-10-12", "Encerramento do Encontro Mineiro de Software Livre"),	(null, "2006-12-01", "PHP Conference Brasil, em São Paulo"),	(null, "2006-12-02", "Encerramento do PHP Conference Brasil, em São Paulo");
Conexão com banco de dados:

<?php $conn = mysql_connect("localhost","root","");mysql_select_db("test");?>
Exibição da agenda:

<?phpinclude("conexao.php");?><html><head><style>span {font: 14px Tahoma, Verdana;}.evento{background: #f6f6f6;padding: 10px;}.data {font: bold 13px Trebuchet MS, Tahoma, Verdana;text-decoration: underline;}</style><?php//nessa sql que está todo o "segredo"$sql = "SELECT evento, data FROM eventos WHERE TO_DAYS(data) >= TO_DAYS(NOW()) AND TO_DAYS(data) <= TO_DAYS(NOW()) + 15";$query = mysql_query($sql);mysql_close();while($array = mysql_fetch_array($query)){	list($ano,$mes,$dia) = explode("-",$array[1]);?><div class="evento">	<span class="data">		<?=$dia . "/" . $mes . "/" . $ano?>	</span> - 	<span class="evento">		<?=$array[0]?>	</span></div><br /><?php}?>
Nesse código pegamos todos os eventos que ocorrerão de hoje até daqui a 15 dias.....

 

O segredo

SELECT evento, data FROM eventos WHERE TO_DAYS(data) >= TO_DAYS(NOW()) AND TO_DAYS(data) <= TO_DAYS(NOW()) + 15

 

TO_DAYS(data) >= TO_DAYS(NOW()) => data do banco de dados >= data atual

TO_DAYS(data) <= TO_DAYS(NOW()) + 15 => data do banco de dados <= data atual mais 15 dias

 

Assim fica simples, não?

 

Era isso então, espero que seja útil.

 

até logo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.