Per prima cosa devi assicurarti che la tabella mysql.time_zone_name sia popolata. Se è vuoto, puoi seguire le istruzioni in questa pagina per compilarlo:
http://dev.mysql.com/doc /refman/5.1/en/time-zone-support.html
In genere è semplice come eseguire un comando come questo nella shell:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
Una volta che la tabella è stata popolata puoi usare la funzione CONVERT_TZ() per aggiornare i valori esistenti nel DB:
http://dev .mysql.com/doc/refman/5.1/en/funzioni-data-e-ora.html#function_convert-tz
Ecco due esempi per mostrare come converte datetime da CET a UTC in inverno e in estate:
mysql> SELECT CONVERT_TZ('2010-01-22 12:00:00','CET','UTC');
+-----------------------------------------------+
| CONVERT_TZ('2010-01-22 12:00:00','CET','UTC') |
+-----------------------------------------------+
| 2010-01-22 11:00:00 |
+-----------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT CONVERT_TZ('2010-07-22 12:00:00','CET','UTC');
+-----------------------------------------------+
| CONVERT_TZ('2010-07-22 12:00:00','CET','UTC') |
+-----------------------------------------------+
| 2010-07-22 10:00:00 |
+-----------------------------------------------+
1 row in set (0.00 sec)