计算列[mysql]日历聚合函数是否确定

xmd2e60i  于 2021-06-15  发布在  Mysql
关注(0)|答案(0)|浏览(275)

在mysql表中,我有一个字段 TransMonth ,注意这是一个实际日期,它的名称反映了由于导入方式的不同,它存储为完整的(月1日)日期。
我想补充一点 TransMonth_YR , TransMonth_MNTH 使用生成的列。但是我得到了一个“检查你的sql”的错误。

...right syntax to use near 'PERSISTENT AFTER `DateUpdated`,
    CHANGE COLUMN `TransMonth_QTR` `TransMonth_QTR'

更新代码:

ALTER TABLE `tbl_transactions`
    CHANGE COLUMN `TransMonth_YR` `TransMonth_YR` SMALLINT(6) AS (YEAR(TransMonth)) PERSISTENT AFTER `DateUpdated`,
    CHANGE COLUMN `TransMonth_QTR` `TransMonth_QTR` TINYINT(4) AS (QUARTER(TransMonth)) PERSISTENT AFTER `TransMonth_YR`,
    CHANGE COLUMN `TransMonth_MNTH` `TransMonth_MNTH` TINYINT(4) AS (MONTH(TransMonth)) PERSISTENT AFTER `TransMonth_QTR`;

我已经搜索过了,但是找不到特定于year()、month()等的示例,只要引用确定性内置函数就可以了。
我的逻辑是,如果你做一年(2018-01-01),它总是会回来与2018年,所以它应该是确定性的。
我的逻辑健全吗?我是否错过了其他失败的东西?
编辑:我在mysql上找到了这段代码
将tbl\u transactions\u改为\u 2018\u 11添加列transmonth\u yr\u b smallint generated always as(year(transmonth))stored
…但这和检查语法错误是一样的。有人在mysql上有计算列吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题