As três linhas de php resolveram meu problema que era exatamente igual o seu... Vou deixar claro que não sei quase nada de php e que comecei a utilizar a 2 semanas atrás, portanto se alguém puder complementar este post e explicar de forma mais correta as minhas suposições, por favor, fiquem à vontade!
Meu cenário era o seguinte:
Existe um programa que pega dados do chão de fábrica e joga em uma tabela dentro de um database no SQL Server 2005 no formato d/m/y com a coluna definida como smalldatetime - esse foi o primeiro passo: toda coluna que tiver data e hora deve ser formatada como tal para futuras operações. O programa que insere os dados, envia uma string como data, porém o SQL Server faz a transformação dos tipo para que seja aceito na coluna automaticamente.
Quando executava o select, a data na coluna vinha como: Oct 5 2009 12:00AM. Quando abria a table no SQL Management Studio Express, a data estava 10/05/2009 00:00:00. Descobri (não sei se é verdade) que o SQL Server grava sempre a data no formato m/d/y e com a hora junto, portanto não tinha como mudar o insert. No meu caso, a hora estava 00:00:00 porque o programa enviava apenas a data. Uma série de funções que ví para tratar os dados da coluna "data" não funcionavam porque meu drive era mssql e não mysql (concluí isso, também não sei se está certo). Precisava da data no formato d/m/y e fiz o código abaixo que funcionou muito bem:
<?php
include("conexao.php");
$consulta=mssql_query("Select Data,Hora,Maquina,Fornecedor,Lote,Qtde_Info,Qtde_Contada,Desvio, Round(Rendimento,2) as Rendimento from CTD order by ID desc");
$linhas=mssql_num_rows($consulta);
for($i=0; $i<$linhas; $i++){
//tratamento do horário para indicação d/m/y
$dataliteral=mssql_result($consulta,$i,"Data"); //guarda resultado da pesquisa "consulta" da linha "i", coluna data na variavel "dataliteral"
$datanumeral=date("d/m/y",strtotime($dataliteral)); //transforma dataliteral em data numerica, porém continua em m/d/y
$data=date('d/m/y',strtotime($datanumeral)); //formata datanumeral para d/m/y
//restante das colunas
.
.
.
echo ("
<tr>
<td>$data</td>
<td>$hora</td>
.
.
.
?>
Acima concluí que, apesar de ter formatado a data da forma literal para numérica, ainda assim continuava vindo m/d/y. Aí tentei usar o mesmo comando para formatar novamente e deu certo.