【问题标题】:CURRENT_TIMESTAMP in timestamp issue in mysqlmysql中的时间戳问题中的CURRENT_TIMESTAMP
【发布时间】: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 在我更新行时没有更新……这是它的结构……activitytime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  • DEFAULT CURRENT_TIMESTAMP - 仅在 INSERT 上设置当前时间戳,以便每次使用您的行更新它,您必须设置 ON UPDATE CURRENT_TIMESTAMP ... 示例:TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
  • 我为我的问题添加了解释并添加了表格结构

标签: php mysql timestamp


【解决方案1】:

试试这个

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 ;

【讨论】:

  • 先生,为什么我的字段不更新行?
  • 我是通过 ALTER TABLE crmtbl MODIFY COLUMN activitytime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
猜你喜欢
  • 2014-01-08
  • 1970-01-01
  • 1970-01-01
  • 2010-11-22
  • 2018-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多