我有一个由"MM-DD-YYYY,hh-mm-ss“格式的日期组成的列dateTime,我需要在同一个表上创建一个存储的列来删除时间元素。我试过了:
ALTER TABLE表ADD COLUMN startOfDay AS(date(dateTime)) STORED;
但是这给出了一个错误的语法错误。我该如何让它工作呢?我认为错误是由于AS部分造成的。
发布于 2020-02-01 02:49:34
首先,当你问一个问题,告诉你有一个错误时,总是在你的帖子中显示错误消息。
其次,要使用存储的列,您需要MySQL 5.7实例或更高版本。目前我只有一个5.6实例在运行,所以我不能测试这个查询。但是查看MySQL文档,我建议使用以下查询语法:
ALTER TABLE <table-name> ADD COLUMN <column-name> DATE GENERATED ALWAYS AS (DATE_FORMAT(<name-of-datetime-column>, `%Y-%m-%d`)) STORED COMMENT '<description>';
只需将占位符替换为您已有的名称。要确定并了解事物是如何工作的,请始终查看该主题的MySQL参考手册。
请参阅:https://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.html
https://stackoverflow.com/questions/60009368
复制相似问题