MySQL日期列自动填充当前日期

Jea*_*ini 13 mysql phpmyadmin

我有一张桌子,我有一个date专栏.每当我插入一个具有当前日期的新注册表时,MySQL是否有办法自动填充此字段?或者这是默认自动生成的吗?

PS:我正在使用PHPMyAdmin

MLB*_*BDG 25

虽然它是一个旧帖子,但是这个图像可能会有所帮助,因为它更明确:(对于phpMyAdmin用户)

在此输入图像描述

此配置使用以下值设置该字段:

2015-12-11 07:50:47

PS:请注意,时间戳将设置服务器的时间!! (即上面的例子得到了太平洋时间(07:50:47)的时间,但它可能来自当地时间16:50:47的西班牙用户)记住这一点.

此外,如果您已经有"创建日期",则可能需要另一列在更新时更新修改日期:您只需在属性字段中设置更新CURRENT TIME STAMP.

准备摇滚!

在此输入图像描述


Har*_*van 19

在mySql查询中将Default设置为

CURRENT_TIMESTAMP
Run Code Online (Sandbox Code Playgroud)


mur*_*dev 6

你必须使用

现在()

要填充当前时间的函数。

IE:

INSERT INTO  user_rights (`user_id`,`right`,`group_id`,`created_date`) VALUES ( '42',  '160',  '1',  now());
Run Code Online (Sandbox Code Playgroud)


MER*_*MER 5

我意识到这可能不是问题的直接答案,但我相信这是最有用的解决方案。

我强烈建议对相关列使用 DATETIME 或 TIMESTAMP 数据类型。
如果您使用的是最新版本的 MySQL,MySQL 将为您完成这项工作。

详细信息
要非常清楚,从 5.6.5 开始,对于 TIMESTAMP 和 DATETIME 数据类型,您可以执行以下操作:

  1. 设置当前日期和时间的 DEFAULT 值(使用 NOW() 或其别名之一,例如 CURRENT_TIMESTAMP)
    这意味着每次在此表中插入新行时,具有此默认值的 TIMESTAMP 或 DATETIME 列将获取当前日期和时间
  2. 设置一个 ON UPDATE 约束,它将更新一列到当前日期和时间,(你猜对了)行被更新

方法如下:
CREATE TABLE 语句中的示例:

CREATE TABLE t1 (
ts1 DATETIME ON UPDATE CURRENT_TIMESTAMP
,ts2 DATETIME DEFAULT NOW()
);
Run Code Online (Sandbox Code Playgroud)

请注意,DATETIME 可以替换为 TIMESTAMP 以获得有效的相同功能。
此外,我建议在 TIMESTAMP 上使用 DATETIME 数据类型,因为 DATETIME 可以支持更大范围的日期。值得一提的是,对于那些少数重要的情况,TIMESTAMP 较小。
有关更多详细信息,请在此处阅读我的回答:https : //stackoverflow.com/a/26117532/1748266


Ben*_*ver 2

遗憾的是,MySQL 不允许将常量以外的值指定为除TIMESTAMPs 之外的列的默认值。

这是 MySQL 8.0+ 版本中提供的功能,但对于旧版本,定义默认数据库的唯一解决方案是使用触发器。

  • 是的,但是我需要每天更改这个默认值吗?我只是希望它自动用当前日期填充该字段。 (3认同)
  • 似乎该功能只能使用“timestamp”数据类型:http://stackoverflow.com/questions/5818423/set-now-as-default-value-for-datetime-datatype (2认同)