You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL 5.7如何为VARCHAR列设置默认值为当前时间戳

在MySQL 5.7中给VARCHAR列设置当前时间戳默认值的方法

直接用CURRENT_TIMESTAMP作为VARCHAR列的默认值是行不通的,因为MySQL 5.7仅允许TIMESTAMP或DATETIME类型列直接使用该函数作为默认值。要实现VARCHAR列默认存储当前时间戳,有两种可行方案:

方案1:使用触发器

创建表后,通过BEFORE INSERT触发器自动给VARCHAR列赋值当前时间戳:

-- 先创建表,不设置默认值
CREATE TABLE foo (
    creation_time VARCHAR(100),
    col1 VARCHAR(100)
);

-- 创建触发器
DELIMITER //
CREATE TRIGGER set_creation_time
BEFORE INSERT ON foo
FOR EACH ROW
BEGIN
    SET NEW.creation_time = CURRENT_TIMESTAMP();
END //
DELIMITER ;

每次插入数据时,如果未指定creation_time的值,触发器会自动将其设为当前时间戳的字符串形式。

方案2:修改列类型为TIMESTAMP(推荐)

如果业务允许,直接将列类型改为TIMESTAMP是更符合MySQL设计规范的做法,既能直接设置默认值,又能自动维护时间:

CREATE TABLE foo (
    creation_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    col1 VARCHAR(100)
);

这种方式无需额外触发器,性能更优,且时间存储格式更规范,便于后续的时间查询和计算。


内容的提问来源于stack exchange,提问作者Mahmood Sanjrani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 17:38:12