修改或者增加 mysql 的时间问题

6 阅读1分钟

原始 SQL

ALTER TABLE admin_user
MODIFY COLUMN createdtime DATETIME
NOT NULL
DEFAULT CURRENT_TIMESTAMP
COMMENT '创建时间';

一、整体在干什么?(先有全局)

修改 admin_user 表中
createdtime 这个字段的定义

⚠️ 不会新建表
⚠️ 不会删数据(前提是数据合法)


二、逐段精讲(核心部分)


1️⃣ ALTER TABLE admin_user

ALTER TABLE admin_user

含义:

admin_user 这张表做结构修改

常见搭配:

语句用途
ADD COLUMN新增字段
MODIFY COLUMN修改字段
DROP COLUMN删除字段
ADD INDEX加索引

2️⃣ MODIFY COLUMN createdtime DATETIME

MODIFY COLUMN createdtime DATETIME

含义:

修改字段 createdtime 的类型 / 属性

⚠️ 注意:

  • createdtime 必须已经存在
  • MODIFY 会 覆盖这个字段的全部定义

👉 所以后面的 NOT NULL / DEFAULT / COMMENT 必须全写


3️⃣ DATETIME

DATETIME

含义:

字段类型:日期 + 时间

范围:

1000-01-01 00:00:00
~
9999-12-31 23:59:59

4️⃣ NOT NULL

NOT NULL

含义:

该字段不允许为 NULL

⚠️ 前提条件:

  • 表里 不能有 NULL / 0000-00-00
  • 否则 ALTER 会失败

5️⃣ DEFAULT CURRENT_TIMESTAMP

DEFAULT CURRENT_TIMESTAMP

含义:

插入时,如果没传 createdtime
MySQL 自动填当前时间

效果等价于:

INSERT INTO admin_user (...) VALUES (...);
-- createdtime = NOW()

6️⃣ COMMENT '创建时间'

COMMENT '创建时间'

含义:

字段注释,仅用于说明

  • Navicat / DBeaver 可视化显示
  • 对程序无影响
  • 强烈建议写

7️⃣ ;(结束符)

;

表示:

SQL 语句结束


三、MODIFY vs ADD vs CHANGE(重点对比)

🔹 MODIFY(你现在用的)

MODIFY COLUMN createdtime DATETIME ...
  • 字段名不变
  • 改类型 / 默认值 / 约束

🔹 ADD(新增字段)

ADD COLUMN createdtime DATETIME ...

🔹 CHANGE(改字段名 + 定义)

CHANGE old_name createdtime DATETIME ...