Insérer la date actuelle lors de l'insertion
P粉764836448
P粉764836448 2023-10-24 17:35:11
0
2
553

J'ai une table avec la structure suivante :

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

Lors de l'insertion d'une nouvelle entrée, la date actuelle doit être ajoutée à la colonne inserted. Cela ne devrait jamais changer.

Lors de la modification d'une entrée, la date actuelle doit être ajoutée à la colonne edited et la date doit être mise à jour à chaque fois que cette entrée est modifiée.

Mon approche consistait à définir le type de données dans les deux cas date 并将标准值更改为 CURDATE()。但相反,只是将 CURDATE() à insérer sous forme de chaîne.

MISE À JOUR Voici un exemple de requête :

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;

Je ne suis cependant pas sûr du type de données.

P粉764836448
P粉764836448

répondre à tous(2)
P粉277305212

Essayez de modifier votre schéma comme suit

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

J'espère que cela vous aidera.

P粉009828788

Selon vos besoins, ceci vous conviendra :

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;

Ensuite, extrayez uniquement la partie date lors du traitement :

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

Vous pouvez utiliser un déclencheur comme solution de contournement pour définir le champ datetime sur NOW() pour les nouvelles insertions :

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

Cela devrait également fonctionner sur les mises à jour

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal