【发布时间】:2013-04-28 09:25:56
【问题描述】:
在 mysql 查询中,我如何找到在 24 小时内更改/更新的记录。
我有带有时间戳的 mysql 表,默认为 CURRENT_TIMESTAMP。我正在使用 PHP 和 Mysql。当用户编辑记录时,我有一个默认 CURRENT_TIMESTAMP 的字段活动时间,我想获取所有更改的记录
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("INSERT INTO crmtbl(ref) 值('myref')");
意思是我没有在插入或更新中使用活动时间
【问题讨论】:
-
填充默认值后,如果行更新,则不会更新,除非您明确更新该列。你的更新声明是什么?你认为你也有问题,所以我有点困惑你为什么不最初发布它......
-
您的时间戳字段是否设置为“ON UPDATE CURRENT_TIMESTAMP”?
-
activitytime 在我更新行时没有更新……这是它的结构……
activitytimetimestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, -
DEFAULT CURRENT_TIMESTAMP - 仅在 INSERT 上设置当前时间戳,以便每次使用您的行更新它,您必须设置 ON UPDATE CURRENT_TIMESTAMP ... 示例:TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
-
我为我的问题添加了解释并添加了表格结构