В таблице 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 () и т. Д., Просто ссылки на встроенные функции DETERMINISTIC в порядке.
Моя логика говорит, что если вы выполните ГОД (2018-01-01), он всегда вернется с 2018 года, поэтому он должен быть ДЕТЕРМИНИСТИЧЕСКИМ.
Звучит ли моя логика, я что-то упускаю из-за ошибки?
РЕДАКТИРОВАТЬ: Я нашел этот код в MySQL
ALTER tbl_transactions_to_2018_11
ДОБАВИТЬ КОЛОННУ TransMonth_YR_B
НЕБОЛЬШОЙ ГЕНЕРАЦИЯ ВСЕГДА КАК (ГОД (В МЕСЯЦЕВ)) ХРАНЕНО
... но при этом проверяется синтаксическая ошибка. Кто-нибудь получил расчетные столбцы, работающие на MySQL?