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

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 colonneinserted. Cela ne devrait jamais changer.

Lors de la modification d'une entrée, la date actuelle doit être ajoutée à la colonneeditedet 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 casdate并将标准值更改为CURDATE()。但相反,只是将CURDATE()à insérer sous forme de chaîne.

MISE À JOURVoici 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
      À propos de nous Clause de non-responsabilité Sitemap
      Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!