Geben Sie beim Einfügen das aktuelle Datum ein
P粉764836448
P粉764836448 2023-10-24 17:35:11
0
2
550

Ich habe eine Tabelle mit folgendem Aufbau:

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

Beim Einfügen eines neuen Eintrags sollte das aktuelle Datum in die Spalte inserted eingefügt werden. Es sollte sich nie ändern.

Beim Bearbeiten eines Eintrags sollte das aktuelle Datum zur Spalte edited hinzugefügt werden und das Datum sollte jedes Mal aktualisiert werden, wenn dieser Eintrag bearbeitet wird.

Mein Ansatz bestand darin, in beiden Fällen den Datentyp zu definieren date 并将标准值更改为 CURDATE()。但相反,只是将 CURDATE(), der als String eingefügt werden soll.

UPDATE Hier ist eine Beispielabfrage:

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;

Über den Datentyp bin ich mir allerdings nicht sicher.

P粉764836448
P粉764836448

Antworte allen(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()

它也应该适用于更新

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage