【问题标题】:mysql insert and update datesmysql插入和更新日期
【发布时间】:2022-10-02 07:28:21
【问题描述】:

所以,我有一个名为公司的表,我想为插入和更新时间添加 2 列。

我该怎么做呢?我不想在我的查询中添加插入和更新日期。 这是我的创建声明

create table companies(
    name varchar(20),
    city char(10),
    numberofemployees int(10),
    averagesalary double

);
alter table companies add inserttime datetime, add updatedtime datetime, add id serial;

我需要插入查询看起来像这样:

insert into companies values (\"company\",\"bglr\",30,400.00)

并需要输出为

name,city,numberofemployees,averagesalary,inserttime,updatetime
company blr 30 400.00 23:00:11 23:00:11

    标签: mysql sql


    【解决方案1】:

    首先,你会必须更改您的 INSERT 语句,因为值的数量与列数不匹配。幸运的是,您可以指定与给定值对应的列子集:

    INSERT INTO companies(name, city, numberofemployees, averagesalary)
         VALUES ('company', 'blgr', 30, 400.00);
    

    由于您不提供插入时间和更新时间的值,因此默认值将用于新记录。使用默认值插入记录的另一种方法是放入DEFAULT 关键字而不是具体值(有关详细信息,请参阅INSERT 的文档)。

    在您的情况下,默认值应该是 NULL 因为您没有定义任何其他内容。要更改列的 DEFAULT 值,您可以修改它们的定义:

    ALTER TABLE companies MODIFY COLUMN inserttime datetime DEFAULT CURRENT_TIMESTAMP;
    

    有了这个,插入时间设置为新插入记录的当前时间。当然,您也可以在CREATE TABLE 语句中使用DEFAULT 子句,或者在添加列时使用。

    接下来,我们来看看更新时间。通常,您希望它自动更新到当前时间。在 MySQL 中,这可以通过为默认值指定 ON UPDATE 子句来完成(Automatic Initialization and Updating for TIMESTAMP and DATETIME 中的详细信息:

    ALTER TABLE companies MODIFY COLUMN 
                updatetime datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
    

    从现在开始,当 a) 插入新记录或 b) 更新现有记录时,updatetime 将自动设置为当前时间。

    有关 MySQL 中默认值的更多信息,请参阅documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      • 2016-05-24
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 2011-02-25
      • 1970-01-01
      相关资源
      最近更新 更多