我有一张表格,其中有date
列。每当我插入一个具有当前日期的新注册表时,MySQL是否有办法自动填充此字段?或者这是默认自动生成的吗?
P.S。:我正在使用PHPMyAdmin
答案 0 :(得分:24)
虽然这是一篇旧帖子,但这张图片可能会有所帮助,因为它更明确: (对于phpMyAdmin用户)
此配置使用以下值设置该字段:
2015-12-11 07:50:47
PS:请注意,时间戳将设置服务器的时间!! (即上面的例子是从太平洋时间(07:50:47)得到的时间,但可能是当地时间16:50:47来自西班牙的用户)记住这一点。
此外,如果您已经拥有"创建日期"您可能需要另一个列,以便在有更新时更新修改日期: 您只需要在属性字段中的更新CURRENT TIME STAMP 上设置 。
准备摇滚!
答案 1 :(得分:16)
在mySql查询中将默认值设置为
CURRENT_TIMESTAMP
答案 2 :(得分:4)
你必须使用
now()
用于填充当前时间的功能。
即:
INSERT INTO user_rights (`user_id`,`right`,`group_id`,`created_date`) VALUES ( '42', '160', '1', now());
答案 3 :(得分:3)
我意识到这可能不是问题的直接答案,但我相信这是最有用的解决方案。
我强烈建议对相关列使用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
答案 4 :(得分:2)
我已将此添加到我的表中并且可以正常工作
ALTER TABLE Medewerkers ADD med_created TIMESTAMP DEFAULT now();
将数据插入记录时,它会自动更新med_created
答案 5 :(得分:0)
您可以为任何其他列指定日期的默认值。语法如下所示:
my_date DATE DEFAULT'2014-01-19'
答案 6 :(得分:0)
您可以从SQL屏幕
执行此类操作ALTER TABLE `table_name` CHANGE `created_at` `created_at` TIMESTAMP NOT NULL