2013-04-28 5 views
1

mysql 쿼리에서 24 시간 내에 변경되거나 업데이트되는 레코드를 어떻게 찾을 수 있습니까?CURRENT_TIMESTAMP in mysql의 타임 스탬프 문제

나는 Mysql.when 사용자 편집 내가 기본 CURRENT_TIMESTAMP와 필드 activitytime을 기록하여 PHP를 사용하고 default.I으로 CURRENT_TIMESTAMP와 타임 스탬프로 MySQL의 테이블을 가지고 있고, 나는 변경되는 모든 기록을 싶어

SELECT * FROM news WHERE activitytime < 24 hours 
는 내가 해본하지만 행운

select * from news where activitytime >= now() - INTERVAL 1 DAY order by activitytime desc 

내 activitytime 필드는 내가 그것을 업데이트하고있는 업데이트하지 않는 이유는 무엇입니까? 내가 activitytime 다시 저장해야합니까?

CREATE TABLE IF NOT EXISTS `crmtbl` (
`id` bigint(20) NOT NULL AUTO_INCREMENT, 
`ref` varchar(33) NOT NULL, 
`activitytime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=316 ; 

쿼리 mysq_query ("crmtbl (REF) 값 ('myref') INTO INSERT");

내가 INSERT 또는 UPDATE에 activitytime를 사용하고 있지 않다 의미

+0

일단 기본값이 채워지면 명시 적으로 해당 열을 업데이트하지 않는 한 열이 있으면 값이 업데이트되지 않습니다. 업데이트 진술은 무엇입니까? 당신은 그걸로 문제가 있다고 생각합니다. 그래서 원래 그걸 게시하지 않은 이유가 조금 혼란 스럽습니다 ... – Ben

+0

타임 스탬프 입력란에 "ON UPDATE CURRENT_TIMESTAMP"가 설정되어 있습니까? – Svetoslav

+0

행을 업데이트하는 동안 activitytime이 업데이트되지 않습니다. 여기에 구조체가 있습니다 ...'activitytime' 타임 스탬프 NOT NULL DEFAULT CURRENT_TIMESTAMP, –

답변

0

노력이

SELECT * FROM news WHERE date >= now() - INTERVAL 1 DAY; 

또는

SELECT * 
FROM table_name 
WHERE table_name.the_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY) 

업데이트 현재 타임 스탬프

변화에 activitytime 필드를 확인해야합니다 그 모양은

입니다.
CREATE TABLE IF NOT EXISTS `crmtbl` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT, 
    `ref` varchar(33) NOT NULL, 
    `activitytime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=316 ; 
+0

왜 내 필드가 행으로 업데이트되지 않습니까? –

+0

@ user2244804 –

+0

내가 ALTER TABLE에 의해 확인했는지 확인하십시오. crmtbl MODIFY COLUMN'activitytime' 타임 스탬프 NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP –