我试图创建一个包含一列的表,该列跟踪插入行的时间。
以下查询正常。创建表已完成,并且能够在添加数据时在列 track_date 中查看日期和时间。
CREATE TABLE tracker(id int, track_date DATETIME DEFAULT NOW());
假设我现在需要跟踪日期,所以我现在运行在查询之下但是我得到语法错误。
CREATE TABLE tracker_2(id int, track_date DATE DEFAULT CURDATE());
你能告诉我。
答案 0 :(得分:1)
MySQL documentation在这一点上非常明确。您可以为DATETIME
或TIMESTAMP
列设置默认值,但不能为日期设置默认值:
这意味着,例如,您无法设置日期的默认值 列为
NOW()
或CURRENT_DATE
等函数的值。 例外情况是您可以指定CURRENT_TIMESTAMP
作为默认值 适用于TIMESTAMP
和DATETIME
列。
您可以选择使用触发器或在查询列时删除时间组件。
(我应该注意,该陈述有点误导,因为NOW()
可以用作DATETIME
的默认值,因为问题和文档都要澄清该段特别指的是DATE
列。)