我使用mysql版本5.7
我有一个设备时间字段datetime
。
由于某种原因,我想添加一个生成的列,该列仅存储devicetime字段的date
部分。
我尝试了以下语句
alter table mytable
add COLUMN recorddate date generated always as date(devicetime) stored;
我遇到错误
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'date(devicetime) stored' at line 2
我从this link的MySQL文档中获取了输入。
我当前的表结构是这样的
答案 0 :(得分:2)
无论出于何种原因,MySQL都需要在表达式周围加上()
:
ALTER TABLE `mytable `
ADD COLUMN `recorddate` DATE GENERATED ALWAYS AS (date(devicetime)) STORED;
答案 1 :(得分:0)
我想到的一个解决方案是,您可以将 TIMESTAMP
存储到表中。
并且,当尝试在系统中找到任何位置时,可以使用DATE_FORMAT()
和STR_TO_DATE()
函数将实际数据中需要的部分用于任何地方。