completespray - Thanks, but that didn't seem to help me. Just to make sure I followed it correctly here's what I tried. Here's my current/changed counter.php:

PHP Code:
if (!defined('IS_ADMIN_FLAG')) {

  die(
'Illegal Access');

}

if (isset(
$_SESSION['session_counter']) && $_SESSION['session_counter'] == true) {

  
$session_counter 0;

} else {

  
$session_counter 1;

  
$_SESSION['session_counter'] = true;

}
$date_now date('Ymd');
$sql "insert into " TABLE_COUNTER_HISTORY " (startdate, counter, session_counter) values ('" $date_now "', '1', '1')
        on duplicate key update counter = counter + 1, session_counter = session_counter + " 
. (int)$session_counter;
$db->Execute($sql);

$counter_query "select startdate, counter from " TABLE_COUNTER;
$counter $db->Execute($counter_query);
if (
$counter->RecordCount() <= 0) {
  
$date_now date('Ymd');
  
$sql "insert into " TABLE_COUNTER " (startdate, counter) values ('" $date_now "', '1')";
  
$db->Execute($sql);
  
$counter_startdate $date_now;
  
$counter_now 1;
} else {
  
$counter_startdate $counter->fields['startdate'];
  
$counter_now = ($counter->fields['counter'] + 1);
  
$sql "update " TABLE_COUNTER " set counter = '" $counter_now "'";
  
$db->Execute($sql);
}


$counter_query "select startdate, counter from " TABLE_COUNTER;

$counter $db->Execute($counter_query);

if (
$counter->RecordCount() <= 0) {

  
$date_now date('Ymd');

  
$sql "insert into " TABLE_COUNTER " (startdate, counter) values ('" $date_now "', '1')";

  
$db->Execute($sql);

  
$counter_startdate $date_now;

  
$counter_now 1;

} else {

  
$counter_startdate $counter->fields['startdate'];

  
$counter_now = ($counter->fields['counter'] + 1);

  
$sql "update " TABLE_COUNTER " set counter = '" $counter_now "'";

  
$db->Execute($sql);

}



$counter_startdate_formatted strftime(DATE_FORMAT_LONGmktime(000substr($counter_startdate42), substr($counter_startdate, -2), substr($counter_startdate04))); 
and I ran this:

Code:
DROP TABLE IF EXISTS counter_history;
CREATE TABLE counter_history (
  startdate char(8) default NULL,
  counter int(12) default NULL,
  session_counter int(12) default NULL,
  PRIMARY KEY  (startdate)
) ENGINE=MyISAM;
in the admin's Install SQL Patches. Then I ran the Upgrade Database in zc_install. Still got this:

1253 COLLATION 'latin1_general_ci' is not valid for CHARACTER SET 'utf8'
in:
[CREATE TABLE counter_history_clean as SELECT * FROM counter_history WHERE 1 GROUP BY startdate COLLATE latin1_general_ci;]

Admin still says Zen Cart 1.3.9b
Database Patch Level: 1.3.8

but when I ran the zc_install it says Database appears to be Zen Cart™ v1.3.9.

Do I need to upgrade Zen Cart?