2012-10-22 48 views
1

我需要知道自MySQL數據庫中的表格編輯以來的時間。有沒有辦法在PHP中做到這一點?我能想到的唯一方法是獲取更新時間,並將其與當前時間進行比較(這會有點麻煩)。如何獲得MySQL數據庫最後一次編輯的時間

+1

你是什麼意思編輯?架構?或者當行更改? – Brad

+1

爲什麼會很麻煩? – eggyal

+0

簡單的原因是將創建和更新的字段添加到表中。還添加 – Habibillah

回答

1

一種解決方案是添加一個timestamp字段,該字段在更改行時會自動更新。 然後你可以選擇最後的更新值找到最後更改時間:

# Add a timestamp column: 
ALTER TABLE [TABLENAME] add column `ts_update` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP; 

# Get the last update value: 
SELECT MAX(ts_update) from [TABLENAME]; 
+1

然後,在回答這個問題時,通過'SELECT TIMEDIFF(NOW(),MAX(ts_update))FROM ...'得到自上次更新以來的時間。 – eggyal

0

這是因爲SHOW TABLE STATUS有點痛似乎沒有返回標準的結果集。我試圖用它作爲子查詢的每一種方式都失敗了。看起來你需要通過編程來解決它。

SHOW TABLE STATUS 
WHERE name = 'target_table'; 

如果你關心的時區只是做一個單獨的SELECT NOW()得到MySQL服務器的時間。

注意:這將只顯示錶格架構更新的時間。如果你想知道上一次插入/編輯行的時間,你必須添加一個像Amirshk建議的時間戳列。

+0

您可以使用['INFORMATION_SCHEMA.TABLES'](http://dev.mysql.com/doc/en/tables-table.html):參見[我的答案](http://stackoverflow.com/a/13025133 )。 – eggyal

+0

不錯。我知道有一張桌子可以選擇,但我認爲它是在大多數用戶無法訪問的'mysql'數據庫中。 – Sammitch

+0

「大多數用戶」很可能無法訪問「INFORMATION_SCHEMA」,尤其是在共享主機環境中。 – eggyal

2
SELECT TIMEDIFF(CURRENT_TIME, UPDATE_TIME) 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'my_table' 
相關問題