MySQL可以直接在正常的select語句中將存儲的UTC時間轉換爲本地timezon:ed時間嗎?MySQL可以將存儲的UTC時間轉換爲本地時區嗎?
假設您有一些帶有時間戳(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`)
)
後來,當我
"select value, date from SomeDateTable";
我當然得到所有的日期作爲其存儲UTC形式。
但是,假設我想讓他們在另一個時區(使用DST), 然後我可以在選擇查詢中添加一些魔法,以便將所有日期返回到所選時區中?
"select value, TIMEZONE(date, "Europe/Berlin") from SomeDateTable";
或者我必須這樣做,在一些其他層之上,就像在一些PHP代碼? (這似乎是大多數人已經解決了這個問題)。
感謝 約翰
如果你的MySQL安裝允許您使用CONVERT_TZ它是一個非常乾淨的解決方案, 這個例子說明如何使用它。
SELECT CONVERT_TZ('2010-01-01 12:00', 'UTC', 'Europe/Stockholm')
但是我不知道這是不是一個好辦法,因爲一些MySQL安裝缺少這個功能,小心使用。
好像是正確的事情,但我打這個錯誤直接:http://bugs.mysql.com/bug.php?id=12445我的服務器缺少時區數據... – Johan 2010-02-02 21:27:16
mysql_tzinfo_to_sql/usr/share/zoneinfo | mysql -u root mysql – Johan 2010-02-02 21:33:04