我有一个表,其中有一个date列。 每当我插入具有当前日期的新注册表时,MySQL是否可以自动填充此字段? 还是默认情况下自动进行?
附言:我正在使用PHPMyAdmin
这应该是您要寻找的东西... stackoverflow.com/questions/168736/
可能的重复项:stackoverflow.com/questions/3696778/,stackoverflow.com/questions/168736/,stackoverflow.com/questions/5818423/
尽管这是一个过时的帖子,但由于它更明确,因此可能会有所帮助:
(对于phpMyAdmin用户)
此配置使用以下值设置该字段:
2015-12-11 07:50:47
PS:请注意,时间戳将设置服务器的时间!! (即上面的示例是从太平洋时间(07:50:47)开始的时间,但可能是来自西班牙用户当地时间16:50:47的时间)。请记住这一点。
另外,如果您已经拥有"创建日期",则可能需要另外一列,以便在有更新时更新修改日期:
您只需要在"属性"字段中设置更新当前时间标记。
准备摇滚!
在您的mySql查询中将Default设置为
你是英雄先生!
你必须使用
现在()
您想填写当前时间的功能。
即:
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数据类型,都可以执行以下操作:
设置当前日期和时间的默认值(使用NOW()或其别名之一,例如CURRENT_TIMESTAMP),这意味着每次您向该表中插入新行时,具有默认值的TIMESTAMP或DATETIME列都会获取当前日期和时间。时间
设置一个ON UPDATE约束,该约束将在(您猜到)行更新时将列更新为当前日期和时间
这是如何做:
CREATE TABLE语句中的一个示例:
请注意,DATETIME可以用TIMESTAMP代替,以有效地实现相同的功能。
另外,我建议在TIMESTAMP上使用DATETIME数据类型,因为DATETIME可以支持的日期范围更大。值得一提的是,在少数情况下,TIMESTAMP较小。有关更多详细信息,请在此处阅读我的答案:https://stackoverflow.com/a/26117532/1748266
我已经将此添加到我的表中并且可以正常工作
当您将数据插入记录时,它会自动更新med_created
您可以在SQL屏幕上执行类似的操作
ALTER TABLE `table_name` CHANGE `created_at` `created_at` TIMESTAMP NOT NULL
不幸的是,MySQL不允许将常量以外的值指定为TIMESTAMP以外的列的默认值。
这是MySQL 8.0+版本中可用的功能,但是对于较旧的版本,数据库定义的默认值的唯一解决方案是使用触发器。
是的,但是我需要每天更改此默认值吗? 我只希望它为我自动填写当前日期。
似乎只有使用timestamp数据类型才能实现该功能:stackoverflow.com/questions/5818423/