MySQL自动存储每行的date时间
在MySQL中,我厌倦了将数据库中的所有表添加到dt_created
和dt_modified
(它们分别是用于创build和最后修改的date时间戳)列。
每次我INSERT
或UPDATE
数据库,我将不得不使用NOW()
关键字。 这是我的坚持。
有没有什么有效的select,MySQL可以自动存储至less插入行的数据时间,让我检索它?
您可以使用DEFAULT约束来设置时间戳:
ALTER TABLE MODIFY dt_created datetime DEFAULT CURRENT_TIMESTAMP ALTER TABLE MODIFY dt_modified datetime DEFAULT ON UPDATE CURRENT_TIMESTAMP
那么你不需要在你的INSERT / UPDATE语句中指定NOW()
。
参考: TIMESTAMP属性
如果您使用的是phpmyadmin,您可以通过以下方式来执行此操作:
ALTER TABLE `tablename` CHANGE `dt` `dt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
应该是正确的代码。
那么,你不能同时拥有:
mysql文档:
不能将当前时间戳作为一列的默认值和另一列的自动更新值。
可悲,不是吗?
你可以使用null来代替now()
类似的问题在这里被问到“ Timestamp for MySQL ”时间戳字段每次被访问时都会更新。 您也可以考虑放置在有问题的桌面上的触发器来为您自动填充这些字段。 根据环境,一些商店/企业不喜欢触发器的使用,所以你可能不得不寻找替代的解决办法。
在phpmyadmin中,你可以设置
或使用此查询
ALTER TABLE `tablename` CHANGE `dt_created` `dt_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP