La requête que vous voulez montrer comme exemple est :
SELECT * FROM temp WHERE mydate > '2009-06-29 16:00:44';
04:00:00 est 4h du matin, donc tous les résultats que vous affichez viennent après ce qui est correct.
Si vous souhaitez tout afficher après 16 h, vous devez utiliser la notation correcte (24 heures) dans votre requête.
Pour rendre les choses un peu plus claires, essayez ceci :
SELECT mydate, DATE_FORMAT(mydate, '%r') FROM temp;
Cela vous montrera la date et son heure de 12 heures.