cari

Rumah  >  Soal Jawab  >  teks badan

Masukkan tarikh semasa semasa memasukkan

Saya mempunyai jadual dengan struktur berikut:

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

Apabila memasukkan entri baharu, tarikh semasa hendaklah ditambahkan pada lajur inserted. Ia tidak sepatutnya berubah.

Semasa mengedit entri, tarikh semasa hendaklah ditambahkan pada lajur edited dan tarikh hendaklah dikemas kini setiap kali entri ini diedit.

Pendekatan saya adalah untuk menentukan jenis data dalam kedua-dua kes date 并将标准值更改为 CURDATE()。但相反,只是将 CURDATE() untuk disisipkan sebagai rentetan.

KEMASKINI Berikut ialah contoh pertanyaan:

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;

Saya tidak pasti tentang jenis data, walaupun.

P粉764836448P粉764836448406 hari yang lalu551

membalas semua(2)saya akan balas

  • P粉277305212

    P粉2773052122023-10-25 09:21:57

    Cuba ubah suai skema anda seperti berikut

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

    Semoga ini membantu.

    balas
    0
  • P粉009828788

    P粉0098287882023-10-25 00:36:08

    Bergantung pada keperluan anda, ini sesuai untuk anda:

    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;

    Kemudian ekstrak hanya bahagian kurma semasa memproses:

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

    Anda boleh menggunakan pencetus sebagai penyelesaian untuk menetapkan medan datetime kepada NOW() untuk sisipan baharu:

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

    Ia sepatutnya berfungsi pada kemas kini juga

    balas
    0
  • Batalbalas