+2

Funções úteis no MySql

criado por Celso Endo em 22/10/2003 1:40pm
Função DATE_ADD() e DATE_SUB()

Vamos supor que temos uma coluna "ultimo_dl" do tipo DATE. Queremos selecionar os dados da tabela, mas com um detalhe: queremos que a coluna ultimo_dl seja 1 dia ou 1 mês a mais ou a menos do que esteja na tabela.

Tradicionalmente iriamos selecionar todos os dados da tabela, depois iriamos fazer um loop e usar uma função em php para adicionar ou subtrair 1 dia ou 1 mês de todas as datas.

Aí que entra essa função... usamos da seguinte forma:

- Para adicionar n dias:
<?php
mysql_connect("localhost","phpbrasil","phpbrasil");
mysql_select_db("phpbrasil");
$query = ("select nome, tamanho, DATE_ADD(ultimo_dl, INTERVAL n DAY) from phpbrasil");
mysql_query($query);
while ($consulta = mysql_fetch_array($query)) {
    echo "Nome: ".$consulta['nome'] . "<br>";
    echo "Tamanho: ".$consulta['tamanho']."<br>";
    echo "Data:" .$consulta[2]. "<p>";
}
?>

Reparem que apesar de eu ter usado a função mysql_fetch_array() na hora de retornar o dado onde foi usado a função temos que chamá-lo pelo seu índice dentro da array. Como para os programadores tudo começa do 0 (zero) então, no exemplo, nome teria índice 0, tamanho teria índice 1 e a data + n dias teria o índice 2, portanto $consulta[2].

- Para subtrair n dias:
Fazemos a mesma coisa mas trocamos DATE_ADD por DATE_SUB.

- Para adicionar ou subtrair n meses:
Ao invés de utilizar "INTERVAL n DAY" colocamos "INTERVAL 1 month". Assim:
$query = "select nome, tamanho, DATE_ADD(ultimo_dl, INTERVAL n MONTH) from phpbrasil";
ou:
$query = "select nome, tamanho, DATE_SUB(ultimo_dl, INTERVAL n MONTH) from phpbrasil";

Existem outros parâmetros que podem ser passados nessa função. Para mais detalhes confiram: http://www.mysql.com/doc/en/Date_and_time_functions.html

Comentários:

Mostrando 1 - 6 de 6 comentários
Diogo Gomes disse:
Recentemente foi discutido esse assunto na lista PHP-PT em http://br.groups.yahoo.com/group/php-pt, pesquise por combobox dinamico, ou algo parecido...
25/10/2003 3:43pm (~18 anos atrás)

Tenho uma consulta ao bd MySQL assim: ...<?php
$link = mysql_connect("localhost", "finetcom_fiu", "fi596522")
or die("Não foi possível conectar");

mysql_select_db("finetcom_cadil")
or die("Não foi possível selecionar o banco de dados");

$consulta = "SELECT * FROM cadil";
$resultado = mysql_query($consulta)
or die("Falha na execução da consulta 1");


$consulta = "SELECT cod, nome, endereco, cep, cidade FROM cadil
WHERE cidade = 'londrina' OR cidade = 'Belo Horizonte'";

$resultado = mysql_query($consulta)
or die("Falha na execução da consulta 2");

while ($linha = mysql_fetch_array($resultado))
{

$Nome = $linha["nome"];
$Endereco = $linha["endereco"];
$Cep = $linha["cep"];
$Cidade = $linha["cidade"];

echo "Nome: $Nome<br>";
echo "Endereco: $Endereco<br>";
echo "Cep: $Cep<br>";
echo "Cidade: $Cidade<p>";
}

?>
Preciso de um script em que, quando eu digito no campo " cidade " , o comando vai buscar na tabela o nome da cidade .
25/10/2003 8:45am (~18 anos atrás)

Diogo Gomes disse:
Através de uma função eu desconheço que tenha forma de ordenar números dessa forma em varchar. Usa int.
24/10/2003 5:04pm (~18 anos atrás)

Boas dicas... gostei do fetch_row nas buscas de 1 resultado...


mas ainda tem 2 que estou procurando solução... ordem em campos varchar com números (200 vem antes de 3) e o LIKE não está sensitivo ('A' é != 'a', 'u' é != 'ú')
24/10/2003 2:30pm (~18 anos atrás)

Legal esse artigo, tinha o costume de dar um explode na data, andei um tempo atras procurando como trazer a data formatada do bd e não encontrei, é uma coisa bem simples mas que ajudam muito...

Valeu
23/10/2003 5:56am (~18 anos atrás)

Luiz Oliveira disse:
Olá,

Você pode dar nome ao campo também, como por exemplo: DATE_FORMAT(ultimo_dl, '%d/%m/%Y') AS data

e na hora de pegar o dado: $consulta['data']

Abraços.
22/10/2003 9:14pm (~18 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)