Hmm...can't think why this would happen. Can you make it happen by editing something else in your profile?
As for scheduling a query, if you do it in php you can create a plugin using one of the cron_script_cleanup hooks (either daily or hourly, depending how often you want to run it). In case you're not in to php, the code for what you posted above would be:
PHP Code:
$vbulletin->db->query_write("UPDATE ".TABLE_PREFIX."user SET showbirthday=1");
but I would suggest this instead:
PHP Code:
$vbulletin->db->query_write("UPDATE ".TABLE_PREFIX."user SET showbirthday=1
WHERE showbirthday = 0");
that way if someone has chosen 2 or 3 it won't change back to 1.