@Nicolai a raison sur le casting et pourquoi la condition est fausse pour toutes les données. Je suppose que vous préférez la première forme parce que vous voulez éviter la manipulation de date sur la chaîne d'entrée, n'est-ce pas ? vous n'avez pas à avoir peur :
SELECT *
FROM table
WHERE update_date >= '2013-05-03'::date
AND update_date < ('2013-05-03'::date + '1 day'::interval);