2012-10-03 75 views
0

我有一個移動應用程序和休息服務。移動應用程序將生成並提供Web服務的UTC日期時間和時區。我需要使用php將這兩個值存儲到mysql中。與PHP存儲與MySQL的UTC日期

我正在從遠程源獲取日期時間,所以我不能使用mysql的UTC_TIMESTAMP()生成'當前'utc時間。

我有2列,創建(DATETIME)和時區(VARCHAR)

在PHP中的表,我會收集以下內容:

$created = "2010-09-30 12:31:10"; //Actual UTC time 
$timezone = "America/Los_Angeles" 

INSERT語句怎麼會這麼IT賣場$創建,是(UTC),沒有它存儲它作爲我的服務器的默認時區?

我需要將它從UTC轉換爲我的服務器在PHP中的本地時間,還是可以在MySQL中進行一些操作?

回答

0

據我所知,MySQL不支持日期列上的時區信息,比如PostgreSQL。

爲什麼你不能只存儲日期?我相當確信不會發生轉換。而且,爲什麼您還需要時區信息?將它轉換爲當地時間後顯示,這不是更有意義嗎?對於查看信息的特定用戶? 「

」當前時區設置不會影響UTC_TIMESTAMP()等函數或DATE,TIME或DATETIME列中的值顯示的值,也不會影響以UTC存儲的這些數據類型中的值;時區適用於它們只有當從TIMESTAMP值轉換時,如果您想爲DATE,TIME或DATETIME值使用特定於語言環境的算術,請將它們轉換爲UTC,執行算術運算,然後再轉換回來。時區信息以便從TIMESTAMP()和類似函數返回本地時間,而不是用於即時轉換插入或選擇的數據。

+0

我正在顯示捕獲時間的本地時間,而不是查看客戶端(即瀏覽器)的時間或本地時間。 - 聽起來很有趣:P – steve

+0

沒問題,所以時間戳和mysql使用其設置的時區來進行轉換,但是datetime只是保存或選擇時沒有轉換的日期和時間?啊,只是看到你的更新... – steve

+0

是的,錯過了那部分,DATETIME不受影響,TIMESTAMP不是。我想說,在具有單獨時區的DATETIME中將其存儲爲UTC的時間將是wya,或者如果您只希望將其顯示爲本地時區,則將時區時間存儲爲UTC時間。從UTC轉換時,您還必須考慮最終的DST,因此在這方面存儲本地時間可能更容易。 – jishi