簡體   English   中英

我應該使用什么數據類型在MySQL中為我的應用程序存儲time()?

[英]What datatype should I use to store time() in MySQL for my application?

我計划在php中使用time()來捕獲我網站上用戶發起的活動的開始和結束。 我不確定這是否是捕獲開始/結束時間的最佳方式。 無論如何,數據將存儲在MySQL中,但我不知道我應該使用哪種數據類型。 根據我在stackoverflow上讀到的答案,使用的數據類型取決於應用程序的用途。

申請目的

  1. 最簡單的是,我想記錄活動的開始,停止(和持續時間)。 可能使用time()。
  2. 在最復雜的情​​況下,我想根據用戶何時進行某項活動,他們花費多少時間進行活動(總計),以及何時最成功/最不成功等等(均為根據開始/結束時間)記住一些事情。 用戶將來自世界各地。

更多信息如果重復某項活動,將為其創建一條新記錄。 記錄不會更新。

起初,我曾計划在MySQL中存儲unix時間戳(作為整數數據類型?),但據我所知這是一個壞主意,因為我將失去很多MySQL處理信息的能力。 如果我將信息存儲為DATETIME,但隨后移動服務器,則所有時間都將根據服務器的本地時間而改變。 我發現令人困惑的是,MySQL中的TIMESTAMP與unix時間戳不同 - 如果我使用time(),這將是我得到的。

我知道unix時間戳只能保存一些系統的日期,但這不是一個問題(目前)。

問題:我應該使用time()來捕獲用戶啟動的活動的開始和結束時間嗎? 根據應用程序的目的, what datatype should I use to store the start and stop of user initiated activities?

謝謝

感謝大家的答案。 TBH我還不確定,所以我還在做一些研究。 我選擇了TIMESTAMPS選項,因為我真的想用UTC(GMT)存儲我的信息。 遺憾的是,我將失去一些內置時間函數的MySQL。 無論如何,再次感謝您的回答。

如果你要去世界各地,MySQL的TIMESTAMP幾乎普遍是DATETIME的一個很好的選擇,因為它將時間存儲為UTC而不是本地時間,因此如果在多個時區進行分析,DST更改不會導致問題。

將非DST更改時區作為基礎可以節省生命,在具有不同DST轉換日期的多個時區之間進行轉換確實可能導致問題,例如考慮在從夏天到更改的一小時內發生兩次的時間戳冬天的時候。

使用DATETIME存儲時間和使用date('Ymd H:i:s')以獲取存儲它的當前時間。 獲取此值時,您將獲得此格式的時間。

要將其轉換為時間戳,請使用$timestamp=strtotime($fetchedValue)以另一種格式顯示此使用date('H:i',$timestamp) 閱讀php日期手冊中的格式

TIMESTAMP只能在1970年1月1日之后存儲值,因為它存儲時區數據。 因此,如果您嘗試在1970年1月1日之前存儲日期,則最好使用DATETIME。

坦率地說,只有當您在具有不同時區的兩台計算機之間主動同步原始數據時,TIMESTAMP才有用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM