2011-04-04 215 views
3

我有一堆數據作爲一堆unix樣式時間戳(UTC)存儲在mysql數據庫中。以前,這些已經通過Perl的gmtime()進行了格式化。看起來MySQL的FROM_UNIXTIME()函數試圖有幫助,並正確的夏令時,但我真的不希望它。如何在MySql中將unix時間戳轉換爲UTC日期?

將結果從系統時區(GMT/BST)轉換爲UTC或者確定DST是否在特定時間生效是否有一個很好的方便方法?

回答

3

你試過:

mysql> SELECT NOW(); 
+---------------------+ 
| NOW()    | 
+---------------------+ 
| 2011-04-04 22:54:13 | 
+---------------------+ 
1 row in set (0.00 sec) 

mysql> set @var = unix_timestamp(NOW()); 
Query OK, 0 rows affected (0.00 sec) 

mysql> SET time_zone='+00:00'; 
Query OK, 0 rows affected (0.00 sec) 

mysql> SELECT NOW(); 
+---------------------+ 
| NOW()    | 
+---------------------+ 
| 2011-04-04 20:54:23 | 
+---------------------+ 
1 row in set (0.00 sec) 

mysql> SELECT FROM_UNIXTIME(@var); 
+---------------------+ 
| FROM_UNIXTIME(@var) | 
+---------------------+ 
| 2011-04-04 20:54:17 | 
+---------------------+ 
1 row in set (0.02 sec) 

如果你想使用命名的時區,你可以看到this page更多的信息,以及如何來填補你的系統上的時區表。

+1

這很好。謝謝你Wrikken。我只是在這裏添加一些代碼供我參考,所以我不會忘記何時搜索我的收藏夾。 set blahblah = convert_tz(from_unixtime(blahblah),@@ session.time_zone,'+ 00:00'); – codingknob 2013-05-16 22:38:24

+0

確實適合每種情況,因此取決於您是否需要_all_日期/時間相關字段來反映另一個時區,或者只是一個_single_,選擇一個或另一個。 – Wrikken 2013-05-16 22:40:45

相關問題