插入时插入当前日期
P粉764836448
P粉764836448 2023-10-24 17:35:11
0
2
547

我有一个具有以下结构的表:

+----+-------------+----------------+------------+------------+
| id | some column | another column |  inserted  |   edited   |
+----+-------------+----------------+------------+------------+
| 1  | ...         | ...            | 2014-08-15 | 2016-03-04 |
| 2  | ...         | ...            | 2015-09-16 | 2016-10-07 |
| 3  | ...         | ...            | 2016-10-17 | 2016-11-16 |
+----+-------------+----------------+------------+------------+

插入新条目时,应将当前日期添加到 inserted 列中。它永远不应该改变。

编辑条目时,应将当前日期添加到 edited 列中,并且每次编辑此条目时该日期都应更新。

我的方法是在两种情况下定义数据类型 date 并将标准值更改为 CURDATE()。但相反,只是将 CURDATE() 作为字符串插入。

更新 这是一个示例查询:

CREATE TABLE `test`.`testtab` 
  ( 
     `id`             INT NOT NULL auto_increment, 
     `some column`    VARCHAR(100) NULL, 
     `another column` VARCHAR(100) NULL, 
     `inserted`       VARCHAR(100) NULL DEFAULT 'CURDATE()', 
     `edited`         VARCHAR(100) NULL DEFAULT 'CURDATE()', 
     PRIMARY KEY (`id`) 
  ) 
engine = innodb;

不过,我不确定数据类型。

P粉764836448
P粉764836448

全部回复(2)
P粉277305212

尝试如下修改您的架构

`inserted` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`edited` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

希望这对您有所帮助。

P粉009828788

根据您的需求,这将适合您:

CREATE TABLE `test`.`testtab` 
  ( 
     `id`             INT NOT NULL auto_increment, 
     `some column`    VARCHAR(100) NULL, 
     `another column` VARCHAR(100) NULL, 
     `inserted`       DATETIME DEFAULT   CURRENT_TIMESTAMP, 
     `edited`         DATETIME ON UPDATE CURRENT_TIMESTAMP, 
     PRIMARY KEY (`id`) 
  ) 
engine = innodb;

然后在处理时只提取日期部分:

DATE_FORMAT(datetime, '%Y-%m-%d')

您可以使用触发器作为解决方法,将日期时间字段设置为 NOW() 以进行新插入:

CREATE TRIGGER `triggername` BEFORE INSERT ON  `tablename` 
FOR EACH ROW 
SET NEW.datetimefield = NOW()

它也应该适用于更新

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板