在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上有计算列吗?
暂无答案!
目前还没有任何答案,快来回答吧!