私のDBサーバー(MySql 5.5を実行)はUTCに設定されており、日付はUNSIGNED INTを使用してデータベースにUnixタイムスタンプとして保存されます。データベースは主に、特定の時間 (exec_time) に実行されるタスクを格納するために使用されます。
ログインしたユーザーのタイムゾーン (この例では BST) を使用して、PHP でタイムスタンプを作成することにより、タスクを挿入します。たとえば、明日の午前 4 時 GMT の 1351396800 で実行するように設定されたタスクがあります。
次のクエリを使用して、データベースからタスクを抽出します。
SELECT * FROM tasks WHERE exec_time <= UNIX_TIMESTAMP();
明日の午前 2 時に時計が 1 時間巻き戻されたら、この設定は問題ありませんか?
更新: PHP は日付を正常に変換しています。PHP タイムゾーンをヨーロッパ/ダブリン (現在は BST) に設定すると、深夜 12 時と午前 4 時に追加された 2 つのイベントが次のように保存されます。
mysql> select exec_time, FROM_UNIXTIME(exec_time) from tasks order by id desc limit 2;
+-------------+----------------------------+
| exec_time | FROM_UNIXTIME(exec_time) |
+-------------+----------------------------+
| 1351378800 | 2012-10-27 23:00:00 |
| 1351396800 | 2012-10-28 04:00:00 |