diff --git a/core/modules/statistics/src/Plugin/migrate/destination/NodeCounter.php b/core/modules/statistics/src/Plugin/migrate/destination/NodeCounter.php
index eee23bff5fa653b5ab8e8e5859f6ef358072c2e6..1045e4ac8c20227dfa523bbdc22025bbc08853bc 100644
--- a/core/modules/statistics/src/Plugin/migrate/destination/NodeCounter.php
+++ b/core/modules/statistics/src/Plugin/migrate/destination/NodeCounter.php
@@ -96,7 +96,10 @@ public function import(Row $row, array $old_destination_id_values = []) {
       ])
       ->expression('daycount', 'daycount + :daycount', [':daycount' => $daycount])
       ->expression('totalcount', 'totalcount + :totalcount', [':totalcount' => $totalcount])
-      ->expression('timestamp', 'CASE WHEN timestamp > :timestamp THEN timestamp ELSE :timestamp END', [':timestamp' => $timestamp])
+      // Per Drupal policy: "A query may have any number of placeholders, but
+      // all must have unique names even if they have the same value."
+      // https://www.drupal.org/docs/8/api/database-api/static-queries#placeholders
+      ->expression('timestamp', 'CASE WHEN timestamp > :timestamp1 THEN timestamp ELSE :timestamp2 END', [':timestamp1' => $timestamp, ':timestamp2' => $timestamp])
       ->execute();
 
     return [$row->getDestinationProperty('nid')];