【问题标题】:MySQL date column auto fill with current dateMySQL日期列自动填充当前日期
【发布时间】:2014-02-09 04:25:20
【问题描述】:

我有一个表,其中有一个date 列。每当我插入具有当前日期的新注册表时,MySQL 是否可以自动填充此字段?还是默认自动生成的?

P.S.:我正在使用 PHPMyAdmin

【问题讨论】:

标签: mysql phpmyadmin


【解决方案1】:

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

此配置将该字段设置为如下值:

2015-12-11 07:50:47

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

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

准备好摇滚了!

【讨论】:

    【解决方案2】:

    在你的 mySql 查询中设置默认为

    CURRENT_TIMESTAMP
    

    【讨论】:

    • 你是英雄先生!
    【解决方案3】:

    你必须使用

    现在()

    您要填写当前时间的函数。

    即:

    INSERT INTO  user_rights (`user_id`,`right`,`group_id`,`created_date`) VALUES ( '42',  '160',  '1',  now());
    

    【讨论】:

      【解决方案4】:

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

      我强烈建议对相关列使用 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()
      );
      

      请注意,可以将 DATETIME 替换为 TIMESTAMP 以实现相同的功能。
      另外,我建议在 TIMESTAMP 上使用 DATETIME 数据类型,因为 DATETIME 可以支持的日期范围要大得多。值得一提的是,对于少数几个重要的情况,TIMESTAMP 更小。
      更多详情请阅读我的回答:https://stackoverflow.com/a/26117532/1748266

      【讨论】:

        【解决方案5】:

        我已将它添加到我的表中,它可以工作

        ALTER TABLE Medewerkers ADD med_created TIMESTAMP DEFAULT now(); 
        

        当您将数据插入记录时,它会自动更新 med_created

        【讨论】:

          【解决方案6】:

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

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

          【讨论】:

          • 是的,但是我需要每天更改此默认值吗?我只是希望它自动为我填写当前日期。
          • 似乎只有使用 timestamp 数据类型才能实现该功能:stackoverflow.com/questions/5818423/…
          • 此答案仅适用于 MySQL
          【解决方案7】:

          您可以从 SQL 屏幕执行类似的操作

          ALTER TABLE `table_name` CHANGE `created_at` `created_at` TIMESTAMP NOT NULL 
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-01-22
            • 1970-01-01
            • 2021-08-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多