2012-10-10 21 views
0

我是數據庫開發新手,目前正在使用MySQL。 我有一列包含美國所有時區。我希望能夠在每行中的每個時區獲得當前時間(僅限時間,無日期)。MySQL時區

時區的數據是這樣的:+05:00 -03:00等等等等

這是如何我試圖它。我有兩張桌子,一個國家,一個城市。 TimeZone位於「城市」表內。我試圖使用函數sys date(),但它會返回系統中的完整日期和當前時間,而不是基於時區。誰能幫我嗎?非常感謝

select TimeZone, Country, sysdate() as "Current Time" 
from city, country 
where Country='USA' and city.CountryId= country.CountryId; 
+0

您是否使用內置於mysql中的時區定義? http://dev.mysql.com/doc/refman/5.0/en/mysql-tzinfo-to-sql.html –

+0

+05:00,-03:00是存儲時區的不好方法。夏令時發生時,您不知道需要調整哪些時區。正確的做法是使用商店時區名稱,例如「America/New_York」,「America/Chicago」等。 –

+0

@NathanVillaescusa感謝您的回覆。我沒有設計/創建表格。我的工作只是查詢它,你知道什麼功能可以幫助我或者如何去做這件事嗎?再次感謝 –

回答

1

您應該能夠使用convert_tz功能:

SELECT CONVERT_TZ(NOW(),'-07:00', city.TimeZone) AS Time, city.Name 
    FROM city, country 
    WHERE country.Name='USA' and city.CountryId= country.CountryId; 

假設你的服務器是在-07:00時區。

+0

非常感謝。我做了:從城市,國家='美國'和城市選擇時區,國家,城市,convert_tz(now(), - 07:00,TimeZone).CountryId = country.CountryId;但它告訴我有一個與我的語法錯誤..我做了-07:00是否正確? –

+0

在-07:00附近加上報價,如'-07:00'。 –

+0

非常感謝。像魅力一樣工作!將接受 –