2012-10-22 3 views
1

MySQL 데이터베이스의 테이블을 편집 한 이후로 시간을 알아야합니다. PHP에서 이것을 수행 할 수있는 방법이 있습니까? 내가 생각할 수있는 유일한 방법은 업데이트 시간을 얻고 현재 시간과 비교하는 것입니다 (약간 번거롭게됩니다).MySQL 데이터베이스가 PHP에서 마지막으로 편집 된 이후 시간을 얻는 방법

+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'db에 있다고 생각했습니다. – 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' 
관련 문제