これは、MySQL がサーバーのタイムゾーンを使用しており、おそらくタイムゾーンに設定されていないためだと思います。最善の解決策は、タイムゾーンに合わせてサーバーを構成することです。
しかし、私はかつてこれと同じ状況に直面し、サーバーを変更する余地がありませんでした (他のアメリカのサイトがありました)。そのため、リクエストごとに MySQL のタイムゾーンを設定する必要がありました。理想的ではないことはわかっていますが、機能します。
アプリに自動ロードされるライブラリがあり、そのクラスのコンストラクターに DB 呼び出しを配置します。構成ファイルにタイムゾーンを設定しています。
$CI = &get_instance();
// Let's set timezone in the DB
$timezone = new DateTimeZone($CI->config->item('app_timezone'));
$offset = $timezone->getOffset(new DateTime("now")); // Offset in seconds
$gmt_offset = ($offset < 0 ? '-' : '+') . str_pad(floor($offset/3600), 2, '0') . ':' . str_pad(($offset % 3600)/60, 2, '0');
$CI->db->query("SET time_zone = '{$gmt_offset}'");