1

在 mysql 查询中,我如何找到在 24 小时内更改/更新的记录。

我有带有时间戳的mysql表,默认为CURRENT_TIMESTAMP。我正在使用PHP和Mysql。当用户编辑记录时,我有一个默认CURRENT_TIMESTAMP的字段activitytime,我想获取所有已更改的记录

 SELECT * FROM news WHERE activitytime  < 24 hours

我试过但没有运气

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

为什么我的活动时间字段不更新我正在更新它?我应该再次保存活动时间吗?

 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("INSERT INTO crmtbl(ref) Values('myref')");

意味着我没有在插入或更新中使用活动时间

4

1 回答 1

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)

您必须在更新当前时间戳时创建活动时间字段

像这样改变

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 ;
于 2013-04-28T09:33:15.180 回答