Frågan du vill visa som exempel är:
SELECT * FROM temp WHERE mydate > '2009-06-29 16:00:44';
04:00:00 är 04:00, så alla resultat du visar kommer efter det, vilket är korrekt.
Om du vill visa allt efter 16:00 måste du använda rätt (24 timmar) notation i din fråga.
För att göra saker lite tydligare, prova detta:
SELECT mydate, DATE_FORMAT(mydate, '%r') FROM temp;
Det visar dig datumet och dess 12 timmars tid.