2012-11-11 131 views
2

有誰知道什麼是MySQL列的正確類型,以便以下列格式存儲日期?例如:2012-11-11T11:09:28 + 00:00MySQL日期格式

更新: 我感興趣的是如何存儲採取了行動,問題是,如果有用戶的時區+xx:xx的部分是MySQL日期格式也包含時區。閱讀MySQL文檔,沒有找到任何相關信息,這就是我在這裏寫的原因。

+5

在DATE/DATETIME列中存儲日期,* format *它們僅用於顯示。 – deceze

+0

這在mysql網站上有介紹。看看這裏http://dev.mysql.com/doc/refman/5.5/en/datetime.html –

回答

4

MySQL中沒有包含時區的日期/時間列類型。這也不是必須的,因爲時間戳是一個時間戳,它是一個絕對的時間點。只有當你想將時間戳格式化爲本地時間時,時區纔是相關的,但MySQL不管時區如何都將日期存儲爲絕對時間點。

如果要存儲包含時區信息的值,則必須將其存儲爲字符串。

但是,更好的策略是這樣的,反正:

  • 正常化任何時候都在應用程序中一個時區,UTC是一個不錯的選擇
  • 商店數據庫中的
  • 存儲用戶歸一化時間偏好他/她的首選時區
  • 從數據庫中提取時間以顯示時,將它們從UTC轉換爲用戶所需的時區

這是解決這個問題的典型方法。您還可以在另一列中的時區存儲時間戳列旁邊,如果你的應用程序是有道理的:

`time_utc` (DATETIME) | `timezone` (VARCHAR) 
----------------------+--------------------- 
2012-11-11 11:11:11 | Europe/Berlin 

你已經在你的數據庫上做計算/查詢統一的時間戳通過這種方式,同時能夠在需要時在當地時間格式化它們。