【发布时间】:2014-02-09 04:25:20
【问题描述】:
我有一个表,其中有一个date 列。每当我插入具有当前日期的新注册表时,MySQL 是否可以自动填充此字段?还是默认自动生成的?
P.S.:我正在使用 PHPMyAdmin
【问题讨论】:
-
这应该是你要找的...stackoverflow.com/questions/168736/…
标签: mysql phpmyadmin
我有一个表,其中有一个date 列。每当我插入具有当前日期的新注册表时,MySQL 是否可以自动填充此字段?还是默认自动生成的?
P.S.:我正在使用 PHPMyAdmin
【问题讨论】:
标签: mysql phpmyadmin
在你的 mySql 查询中设置默认为
CURRENT_TIMESTAMP
【讨论】:
你必须使用
现在()
您要填写当前时间的函数。
即:
INSERT INTO user_rights (`user_id`,`right`,`group_id`,`created_date`) VALUES ( '42', '160', '1', now());
【讨论】:
我意识到这可能不是问题的直接答案,但我相信这是最有用的解决方案。
我强烈建议对相关列使用 DATETIME 或 TIMESTAMP 数据类型。
如果您使用的是相当最新的 MySQL 版本,MySQL 将为您完成工作。
详情:
要非常清楚,从 5.6.5 开始,对于 TIMESTAMP 和 DATETIME 数据类型,您可以执行以下操作:
方法如下:
CREATE TABLE 语句中的示例:
CREATE TABLE t1 (
ts1 DATETIME ON UPDATE CURRENT_TIMESTAMP
,ts2 DATETIME DEFAULT NOW()
);
请注意,可以将 DATETIME 替换为 TIMESTAMP 以实现相同的功能。
另外,我建议在 TIMESTAMP 上使用 DATETIME 数据类型,因为 DATETIME 可以支持的日期范围要大得多。值得一提的是,对于少数几个重要的情况,TIMESTAMP 更小。
更多详情请阅读我的回答:https://stackoverflow.com/a/26117532/1748266
【讨论】:
我已将它添加到我的表中,它可以工作
ALTER TABLE Medewerkers ADD med_created TIMESTAMP DEFAULT now();
当您将数据插入记录时,它会自动更新 med_created
【讨论】:
遗憾的是,MySQL 不允许将常量以外的值指定为 TIMESTAMPs 以外的列的默认值。
这是 MySQL 8.0+ 版本中提供的一项功能,但对于旧版本,数据库定义默认值的唯一解决方案是使用触发器。
【讨论】:
timestamp 数据类型才能实现该功能:stackoverflow.com/questions/5818423/…
您可以从 SQL 屏幕执行类似的操作
ALTER TABLE `table_name` CHANGE `created_at` `created_at` TIMESTAMP NOT NULL
【讨论】: