Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Opa galera, belezinha?
Tenho 2 campos no sq em timestamp - unix, gostaria de saber como botar para que apareça no orderby de acordo com o date_format:"%d. %b %Y - %T".
Situação:
$sql = "SELECT * FROM amx_amxadmins ORDER BY expired";
$res = mysql_query($sql) or die(mysql_error());
while($row=mysql_fetch_array($res)){
[...]
<td>
<div align="center"><?=$row[created]?></div> </td>
<td>
<div align="center"><?=$row[expired]?></div> </td>
</tr>Tentei com e sem o ponto e o hífen, mas em ambos a tabela não demonstra nenhum valor. Como se não puxasse nada do sql.
O correto é ordenar pelo campo não formatado. Por quê?
Por que como a formatação retorna uma string, ao compararmos por exemplo:
'19/11/2011 - 14:14:00' com '22/10/2011 - 00:00:00', teremos:
'22/10/2011 - 00:00:00' > '19/11/2011 - 14:14:00'
Como posso fazer isto Henrique?
Dê um alias diferente para a coluna formatada:
$sql = "SELECT DATE_FORMAT(created, '%d. %b %Y - %T') AS f_created, DATE_FORMAT(expired, '%d. %b %Y - %T') AS f_expired FROM amx_amxadmins ORDER BY expired";
$res = mysql_query($sql) or die(mysql_error());
echo '<table>
<tr>
<td>Criado</td>
<td>Expirado</td>
</tr>';
while($row=mysql_fetch_assoc($res)){
$created = $row['f_created'];
$expired = $row['f_expired'];
echo "<tr>
<td>$created</td>
<td>$expired</td>
</tr>";
}
echo '</table>';
Testa aí:
$sql = "SELECT DATE_FORMAT(created, '%d. %b %Y - %T') AS created, DATE_FORMAT(expired, '%d. %b %Y - %T') AS expired FROM amx_amxadmins ORDER BY expired";
Eu não testei aqui mas deve funcionar, se não funcionar é por causa do ponto e/ou hífen na formatação da data.