使用Curdate()时出现语法错误

时间:2016-05-08 13:25:51

标签: mysql sql rdbms

我试图创建一个包含一列的表,该列跟踪插入行的时间。

以下查询正常。创建表已完成,并且能够在添加数据时在列 track_date 中查看日期和时间。

CREATE TABLE tracker(id int, track_date DATETIME DEFAULT NOW());

假设我现在需要跟踪日期,所以我现在运行在查询之下但是我得到语法错误。

CREATE TABLE tracker_2(id int, track_date DATE DEFAULT CURDATE());

你能告诉我。

1 个答案:

答案 0 :(得分:1)

MySQL documentation在这一点上非常明确。您可以为DATETIMETIMESTAMP列设置默认值,但不能为日期设置默认值:

  

这意味着,例如,您无法设置日期的默认值   列为NOW()CURRENT_DATE等函数的值。   例外情况是您可以指定CURRENT_TIMESTAMP作为默认值   适用于TIMESTAMPDATETIME列。

您可以选择使用触发器或在查询列时删除时间组件。

(我应该注意,该陈述有点误导,因为NOW() 可以用作DATETIME的默认值,因为问题和文档都要澄清该段特别指的是DATE列。)