My database system (Ingres) allows me to use the constant
'NOW' as the current date. You query would then become:
$sth = $dbh->prepare("UPDATE Schedules SET Date = 'NOW' WHERE ID = $id
+") or die "Couldn't prepare statement: $DBI::errstr; stopped";
Check the database documentation and see if a similar method exists.
If not then you can fudge the date using localtime in array mode and a bit of sprintf:
my @cur_time = localtime();
my $now = sprintf("%4d-%02d-%02d", $cur_time[5]+1900, $cur_time[4]+1,
+$cur_time[3]);
for an ISO standard date.
You are using $dbh->{RaiseError}=1, aren't you? It does make error-checking so much easier - you don't need all those or die "Error...." check everywhere. And you don't forget the one where the code fails in production!