CREATE日期类型表,并在MySQL上使用其默认值CURRENT_DATE

问题描述 投票:1回答:2

我尝试在sql命令中运行下面的代码,但代码行start_date date DEFAULT CURRENT_DATE有问题,不明白为什么。我只需要约会。

但是,如果我用start_date datetime DEFAULT CURRENT_TIMESTAMP替换它,SQL将运行,但我的想法是我只需要存储日期而不是日期时间。

如何在不使用时间戳和后者转换为仅日期的情况下执行此操作?

CREATE TABLE advertisement (
       id int not null AUTO_INCREMENT,
       PRIMARY KEY(id),
       summary text DEFAULT null,
       featured_image varchar(50) DEFAULT null, 
       start_date date DEFAULT CURRENT_DATE,
       end_date date not null,
       link text DEFAULT null,
       added_date datetime DEFAULT CURRENT_TIMESTAMP,
       updated_date datetime ON UPDATE CURRENT_TIMESTAMP
    )
php mysql sql
2个回答
1
投票

documentation非常清楚,这适用于datetime列,但不适用于date列:

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

如果您真的想要忽略时间组件,则必须使用触发器来设置值,而不是default约束。


0
投票

通过这种方式,我能够使用CURRENT_DATE功能。此代码经过100%测试。注意,保存添加新行时该点实例的日期值。

我首先使用了以下SQL:

CREATE TABLE advertisement (
  id int(11) NOT NULL AUTO_INCREMENT,
  summary text DEFAULT NULL,
  featured_image varchar(50) DEFAULT NULL,
  start_date date DEFAULT NULL,
  end_date date NOT NULL,
  link text DEFAULT NULL,
  added_date datetime DEFAULT CURRENT_TIMESTAMP,
  updated_date datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP
)

然后在添加SQL期间我使用查询作为

INSERT INTO `advertisement` SET
start_date=CURRENT_DATE(),
end_date='2018-04-02',
added_date='2018-03-01 00:10:33'

谢谢大家的建议。

© www.soinside.com 2019 - 2024. All rights reserved.