2010-12-21 35 views
18

我需要計算用戶在網站上花費的時間。給我一些類似「Mr X在線4小時43分鐘」的註銷時間和登錄時間是不同的。所以要存儲4小時43分鐘,我宣佈它是這樣的: duration time NOT NULLMySQL存儲持續時間 - 數據類型?

這是有效的或更好的方式來存儲?我需要存儲在數據庫中,因爲我需要將其他計算用於+其他用例。

回答

32

將它存儲爲整數秒是最好的方法。

  • UPDATE將是清潔和簡單的 - 即duration = duration + $increment
  • 如狄指出的,有limitations使用TIME場 - 例如「TIME的值範圍可以從'-838:59:59''838:59:59'
  • 天/小時/分鐘/秒顯示格式不會被硬編碼。
  • 執行其他計算在使用整數「秒數」字段時幾乎肯定會更清晰。
+0

好吧,聽起來善意用int,謝謝。 – Juds 2010-12-22 02:15:35

+1

我一定會用'TIME'去。我無法想象任何人在線連續花費34天。如果是這樣,我準備讓這種罕見的情況發生錯誤。 'UPDATE'語句可以使用'ADDTIME()'輕鬆完成。有了這個,你還可以添加像30分鐘和23秒,而無需將其轉換爲秒。沒有什麼是硬編碼的,你總是可以做'TIME_TO_SEC()' - 如果你真的需要這個(我懷疑)。 – Gerald 2016-09-03 14:14:38

0

我不會使用時間,因爲你將被限制爲24小時。最簡單的方法就是在幾分鐘內存儲一個整數(或者取決於你需要的分辨率的秒數)。

+0

整數將不會給出像4小時45分32秒準確的時間,除非我在幾秒鐘內存儲?我希望能夠自動格式化數據庫中的條目x小時x分鐘。 (也許會增加x秒),而不是將其存儲爲474747474秒,然後再次需要將其轉換爲人類可讀形式。 – Juds 2010-12-21 11:20:59

+0

@Juds我認爲在DB中格式化時間間隔的方便性超過了@Tristram和@Riedsio提到的許多其他因素。爲什麼不讓間隔格式化成爲表示層關心? :) – 2010-12-21 20:38:36

+5

時間不限於24小時,見上面 – Ashley 2013-03-29 11:44:11

相關問題