2010-10-05 49 views
10

我想存儲一些東西在一個MySQL數據庫中的時間,時間的長短,如2小時5分10秒。精度低至第二是優選的,但不是必需的。要做到這一點,最好的方法是什麼?在MySQL數據庫中存儲時間跨度的最佳方法?

+2

目的可能在這裏有所作爲;如果存儲整數秒對您來說已經足夠,那可能是要走的路。我在一段時間沒有檢查過mysql文檔,但我不記得有一個時間跨度數據類型的MySQL。 – Andrew 2010-10-05 20:49:48

+2

我不知道MySQL的詳細信息,但根據我的經驗,如果您只需要「到第二個」精度,則存儲TotalSeconds是最有意義的。將該值解析回任何給定的時間格式通常要容易得多,而不是讓代碼解析,首先將一個字符串「00:00:00」稱爲中間格式。 – 2010-10-05 20:52:40

+0

好點@安德魯。在看了一些答案後,我打算繼續使用TIME類型,但是在考慮如何在應用程序中實現它之後,整數w /秒更有意義(大量的數學/比較隨着時間而進行)。 – GSto 2010-10-05 20:58:24

回答

16

MySQL 類型可以將時間跨度從'-838:59:59'存儲到'838:59:59' - 如果這在您的要求範圍內,並且將MySQL本地呈現這些跨度HH:MM:SS表單,然後使用它。

否則,我只是用一個整數類型來表示秒數。

3

我喜歡把東西作爲基本單位存儲在數據庫中。這樣,我可以可靠,準確地轉換成我以後想要的其他東西。

您只需要擔心使用此方法的唯一方法就是降低精度。如果您要存儲跨國旅行的距離,英寸或釐米可能不是您要查找的。

在你的情況,我會存儲的跨度爲秒或毫秒,並從那裏去。

1

正如Andrew所說,一個有秒的整數字段可能已經存在。

如果數據可用,並且存儲它是有意義的,我會將數據以開始和結束時間保存在兩個mySQL時間戳中(也可能稍後用於審計),並使用DATE_DIFF()來獲取實際持續時間。

相關問題