代码之家  ›  专栏  ›  技术社区  ›  jeje

在MySQL中定义默认日期值,类似于时间戳

  •  2
  • jeje  · 技术社区  · 15 年前

    我使用的是MySQL(没人是完美的),4.1版,我还定义了一些时间戳列,如下所示:

    ALTER TABLE foo ADD creation TIMESTAMP DEFAULT NOW() ;
    

    我想做同样的事情,但对于日期字段。原因是我不需要时间戳精度,而且由于MySQL中不存在函数索引,所以我无法快速访问具有给定日期的行(不管是什么时间)。所以我尝试了以下方法,但不起作用:

    ALTER TABLE foo ADD creation_date DATE DEFAULT CURDATE() ;
    ERROR 1067 (42000): Invalid default value for 'creation_date'
    

    甚至

    ALTER TABLE foo ADD creation_date DATE DEFAULT DATE(NOW()) ;
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(now())' at line 1
    

    也不起作用。

    有什么想法吗?

    1 回复  |  直到 14 年前
        1
  •  4
  •   port-zero    15 年前

    在MySQL中,默认值必须是常量。 不允许使用函数或表达式。

    异常是时间戳类型,当前时间戳是有效的非常量默认值。

    See 4.1 manual: Data Type Default Values

    推荐文章