我希望有一列存储行的创建日期。 我正在使用php和mysql,但我认为这并不重要。
我一直在寻找有关此问题的一系列答案,但它们似乎都是为了更新现有表。当然,我要寻找的是一个问题,因为这是一个非常基本的问题,但我还没有找到。 我已经尝试过使用DEFAULT,CONSTRAINT进行操作,但是一旦添加到我的代码后,它们都不允许我创建表。您可能会觉得我不太精通sql,而且您不会错。
这将创建表格,您能告诉我要添加什么吗?
CREATE TABLE IF NOT EXISTS artwork (
id_artwork int(4) NOT NULL AUTO_INCREMENT,
title varchar(50) NOT NULL,
creationDate DateTime(3),
CONSTRAINT PK_artwork PRIMARY KEY (id_artwork)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
我尝试以下操作均未成功:
creationDate DateTime(3) DEFAULT GETDATE()
creationDate DateTime(3) DEFAULT (GETDATE())
creationDate DATETIME(3) DEFAULT (CURRENT_TIMESTAMP)
MySQL版本:5.7.23-MySQL社区服务器(GPL)
答案 0 :(得分:2)
来自MySQL documentation on initialization using DATETIME:
如果TIMESTAMP或DATETIME列定义在任何地方都包含显式的小数秒精度值,则在整个列定义中必须使用相同的值。
这意味着我们将不得不提高您的精确度。我能够在SQL Fiddle上使用它:
CREATE TABLE IF NOT EXISTS artwork (
id_artwork int(4) NOT NULL AUTO_INCREMENT,
title varchar(50) NOT NULL,
creationDate DateTime(3) DEFAULT CURRENT_TIMESTAMP(3),
CONSTRAINT PK_artwork PRIMARY KEY (id_artwork)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;