2011-08-09 157 views
0

在我的數據庫中,我將時間存儲爲BIGINT UTC值。將UTC時間字符串轉換爲Unix時間

在我的測試數據SQL轉儲爲了便於閱讀,我希望看到UTC的時間。但是,MySQL unix_timestamp函數需要在本地時區中的時間,我試圖避免。

我環顧四周,我發現了UTC時間字符串轉換爲UNIX時間戳的唯一方法是使用這個表達式:

SELECT unix_timestamp(CONVERT_TZ('2011-08-08 06:00:00','UTC',@@global.time_zone))

有沒有更好的方式來做到這一點?

回答

1

如果您將其存儲爲時間戳而不是bigint,則只會通過設置時區自動發生。

此外,我不太明白你在做什麼。您正在存儲unixtime,因爲您的bigint列正確嗎?所以我不明白你爲什麼使用unix_timestamp()函數 - 它將TO轉換爲unixtime,而不是它。

我想這是你所需要的:

SET time_zone = '+0:00'; 
SELECT FROM_UNIXTIME(col) FROM table; 
+0

我的數據來自於與unix時間戳和熄滅作爲Unix的時間戳是很有意義將其存儲爲一個BIGINT。我使用unix_timestamp的原因是,我可以讀取進入數據庫的日期。否則,我的測試數據會被我無法輕易讀取的unix時間戳所散佈。 – Frederik

+0

不,它不。將它作爲時間戳存儲是有意義的。 unix_timestamp將* TO *轉換爲一個unix時間(一個數字)。你的意思是'from_unixtime()'?因爲你所要做的就是將當前的時區設置爲utc,它將會正常工作。此外,時間戳自動轉換爲人類可讀的日期。 (您選擇+0將它們轉換爲數字。) – Ariel

+0

但是,我們現在將它們存儲爲數字,這不會改變。然而,在我的測試代碼中,我想將它們看作UTC日期/時間字符串。你有什麼想法如何做這種轉換(沒有在數據庫中設置UTC - 我沒有任何控制權) – Frederik