插入時插入目前日期
P粉764836448
P粉764836448 2023-10-24 17:35:11
0
2
549

我有一個具有以下結構的表:

+----+-------------+----------------+------------+------------+
| 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()

它也應該適用於更新

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板