You need to move the display of the date field outside of the foreach loop. Alternatively check if the same date has already been displayed before displaying each item.
So start with an empty date field:
$lastdate = "";
foreach ...
$year = strtotime($publications['publication_year']));
if ($year != $lastdate) {
$lastdate = $year;
}
}