如何在MySQL/MariaDB中添加一个生成的列,该列将根据其他列中的信息计算日期



我了解如何使用MariaDB(支持与MySQL相同的语法(添加生成的列,并且已经使用简单的算术运算对该表进行了添加。然而,当我尝试使用DATE_SUB函数时,我会得到语法错误:

SQL Error [1064] [42000]: (conn=28594) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WEEKS)) STORED' at line 3

我使用的代码是:

ALTER TABLE `ExampleTable`
ADD COLUMN `DOB` DATE
AS (DATE_SUB (`DateExpected`, INTERVAL `Age` WEEKS)) STORED; 

我想根据DateExpected和Age值计算DOB。

从CREATE TABLE:

`DateExpected` date DEFAULT NULL,
`Age` int(11) DEFAULT NULL,

替换为:

AS (DATE_SUB('1998-01-02', INTERVAL 31 DAY) STORED; 

给出了类似的错误:

SQL Error [1064] [42000]: (conn=28594) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'STORED' at line 3

但替换为:

AS (`DateExpected`) STORED; 

在用DateExpected中的值填充DOB列时效果很好,所以我认为这与DATE_SUB语句有关。

你可以做:

ALTER TABLE `ExampleTable`
ADD COLUMN `DOB` DATE
AS (`DateExpected` - INTERVAL `Age` WEEK) STORED; 

最新更新