MySQL può convertire un orario UTC memorizzato in un fuso orario locale: ora direttamente in una normale istruzione di selezione?MySQL può convertire un orario UTC memorizzato nel fuso orario locale?
Supponiamo di avere alcuni dati con un timestamp (UTC).
CREATE TABLE `SomeDateTable` (
`id` int(11) NOT NULL auto_increment,
`value` float NOT NULL default '0',
`date` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
)
Poi, quando ho
"select value, date from SomeDateTable";
Io, naturalmente, ottenere tutte le date come nella loro forma UTC memorizzato.
Ma diciamo che mi piacerebbe averli in un altro fuso orario (con DST), posso quindi aggiungere un po 'di magia alla query di selezione in modo da ottenere tutte le date indietro nel fuso orario selezionato?
"select value, TIMEZONE(date, "Europe/Berlin") from SomeDateTable";
Oppure devo farlo in qualche altro strato in alto, come in qualche codice php? (sembra che la maggior parte delle persone abbia risolto questo problema).
Grazie Johan
Se l'installazione di MySQL consente di utilizzare CONVERT_TZ si tratta di una soluzione molto pulita, questo esempio mostra come usarlo.
SELECT CONVERT_TZ('2010-01-01 12:00', 'UTC', 'Europe/Stockholm')
Tuttavia non so se questo è un buon modo dal momento che alcuni installazione di MySQL non è presente questa funzione, usare con cautela.
sembra essere la cosa corretta ma ho colpito questo bug direttamente: http://bugs.mysql.com/bug.php?id=12445 al mio server mancavano i dati del fuso orario ... – Johan
mysql_tzinfo_to_sql/usr/share/zoneinfo | mysql -u root mysql – Johan