Являются ли статистические функции [MySQL] детерминированными - PullRequest
0 голосов
/ 09 января 2019

В таблице 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?

...