【问题标题】:MySQL DATE_ADD function; how to use another columns value as date on table creationMySQL DATE_ADD 函数;如何使用另一个列值作为创建表的日期
【发布时间】:2021-09-09 02:54:55
【问题描述】:

我有一个表格用于几周内做某事,我希望 end 列在 start 列后 6 天自动设置其值,但我不知道如何引用 start

CREATE TABLE `weeks`(
    `id` INT AUTO_INCREMENT PRIMARY KEY,
    `start` DATE UNIQUE NOT NULL,
    `end` DATE UNIQUE NOT NULL DEFAULT DATE_ADD(`start`, INTERVAL 6 DAY), -- this line
    `availablity` INT NOT NULL
);

有人可以帮忙吗?

最后请原谅我的英语不好(我不是本地人)

编辑 -> 我使用 PHPMyAdmin 插入表格没有任何问题,问题就出在于此。我在终端中插入了 MariaDB,一切正常。

【问题讨论】:

  • 你正在做的事情在 mariadb 中有效,但在 mysql 中还没有。在 mysql 中,您可以为此使用触发器。
  • 为什么开始和结束是唯一的?我找不到任何好的理由这样做

标签: mysql sql mariadb dateadd


【解决方案1】:

你有错误的语法

CREATE TABLE `weeks`(
    `id` INT AUTO_INCREMENT PRIMARY KEY,
    `start` DATE UNIQUE NOT NULL,
    `end` DATE   GENERATED ALWAYS AS (DATE_ADD(`start`, INTERVAL 6 DAY)) UNIQUE,
    `end2` DATE  NOT NULL UNIQUE DEFAULT  (DATE_ADD(`start`, INTERVAL 6 DAY)) ,
    `availablity` INT NOT NULL
);
INSERT INTO weeks (`start`,`availablity`) VALUEs (NOW(),1)
SELECT * FROm weeks
编号 |开始 |结束 |结束2 |可用性 -: | :--------- | :--------- | :--------- | ----------: 1 | 2021-06-25 | 2021-07-01 | 2021-07-01 | 1

db小提琴here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    • 2023-03-22
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 2012-09-15
    • 2017-11-18
    相关资源
    最近更新 更多