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

时间:2014-01-20 05:01:53

标签: mysql phpmyadmin

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

P.S。:我正在使用PHPMyAdmin

7 个答案:

答案 0 :(得分:24)

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

enter image description here

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

  

2015-12-11 07:50:47

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

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

准备摇滚!

enter image description here

答案 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数据类型,您可以执行以下操作:

  1. 设置当前日期的默认值& time(使用NOW()或其中一个别名,如CURRENT_TIMESTAMP)
    这意味着每次在此表中插入新行时,具有此默认值的TIMESTAMP或DATETIME列将获取当前日期和时间
  2. 设置ON UPDATE约束,将列更新为当前日期&时间,(你猜对了)行更新
  3. 以下是:
    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