2011-07-22 24 views
0

我有一個產品表,我已經添加了一個新的字段用作時間戳。我不確定它應該是一個bigint字段還是時間戳字段。有什麼區別,哪些會提供最佳性能?php mysql timestamp - 幾個問題

我想比較當前日期的時間戳值,如果差值大於X天更高(這意味着該產品不再可用)從我的查詢結果中排除的產品。

我從來沒有使用之前的時間戳,我需要腳踏啓動,瞭解使用情況,謝謝。

+0

時間戳字段上插入自動設置時間戳(與選項也設置UPDATE),所以你不提供時間戳字段INSERT語句 – rabudde

回答

0

要保存時間在MySQL下降到第二,你可以選擇

DATETIME

之間

  • TIMESTAMP
他們之間的關係進行了討論 here

但是,爲了使長話短說,時間戳是一個整數,如果未提供任何值,自動設置。所以如果你想存儲最後一個插入的時間,這是一個不錯的選擇。日期時間必須明確設置,並且是「光學」格式「YYYY-MM-DD HH:MM:SS」的字符串。但是MySQL處理速度非常快,所以TS不會更快,只是B/C它是一個整數。

特別是如果你想在一次超越<操作,> =那麼我建議DATETIME。有很多可用的功能。

+0

時間戳值將來自外部源(通過更新腳本Access 2007數據庫)來feeded到表中。網站上的產品表將是隻讀的,這意味着時間戳字段不會從MySQL本身進行更新,它只會在那裏比較和給定的值今天的區別(NOW())。 – bikey77

0

總的想法是,您使用timestamp來記錄MySQL記錄中的更改,因爲每次更新記錄時都會更新這些更改,並且您使用datetime來存儲特定事件。

有關字段本身的操作,MySQL支持functions可以做的日期時間的計算。

在性能方面,時間戳使用的空間比日期時間多,而且速度通常更快。

+0

時間戳值將從外部源(Access 2007數據庫,通過更新腳本)傳入表中。網站上的產品表將是隻讀的,這意味着時間戳字段不會從MySQL本身更新,它只是用於比較今天(now())和給定值之間的差異。 – bikey77

+0

但是你的現場商店是什麼?你在尋找什麼樣的表現? – Sukumar

0

Mysql時間戳是人類可讀的。 (下面從MySQL網站獲得)

例如 TIMESTAMP列以與DATETIME列相同的格式顯示。換句話說,顯示寬度固定爲19個字符,格式爲'YYYY-MM-DD HH:MM:SS'。

使用這些可以讓你使用MySQL功能,如DATE_ADD,您可以在您的查詢使用。

或者您可以使用UNIX時間戳(MySQL字段類型INT)。然後你可以對數值進行數學運算,然後使用PHP DATE函數(第二個參數是時間戳)進行格式化。

0

FOA,我們必須檢查TIMESTAMP和DATETIME之間的差異。

  • TIMESTAMP
    • 需要4個字節
    • '1970-01-01 00:00:01' UTC爲 '2038年1月19日3點14分07秒' UTC(同UNIX曆元)當你讀/寫將會發生
    • UTC轉換。
    • 表只能有一個時間戳列。
  • DATETIME
    • 需要8個字節
    • '1000年1月1日00:00:00' 到「23點59分59秒9999-12-31
    • 沒有轉換。
    • 表可以有一個或多個DATETIME列。

通常情況下,我使用TIMESTAMP時,我想跟蹤的記錄(如修改日期時間)的變化,並使用DATETIME,如果我想記錄不變的日期和時間。 (如創建日期時間)

所以,如果你有一個計劃,以處理大量的記錄,並不需要在信號出現時間,TIMESTAMP是更小,更快的解決方案。但請注意,它有我在上面提到的限制。

參考文獻:在mysql中