I don’t know if anyone else has run into this problem, but I had a bunch of old drafts when I upgraded to WordPress 2.0.2. When I published one, the timestamp wasn’t updated to the current time and it was annoying to have to change it manually. I found out that a fix had been introduced in 2.0 that sets the post_date to all 0s when a draft is created. This is what caused the problem because all my drafts already had dates, so they were treated as if they had already been published. To fix the problem I ran the following command in MySQL to set the post date of all my drafts to 0s.
UPDATE wp_posts SET post_date = ’0000-00-00 00:00:00′ WHERE post_status = ‘draft’;
In short, if you created drafts before upgrading to 2.0 and you’re experience weird things with your timestamps when you publish, run this command in MySQL directly or using a tool like phpMyAdmin.